User Tools

Site Tools


projects:c-info-wand

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
projects:c-info-wand [2015/04/19 05:13]
smile created
projects:c-info-wand [2015/04/25 03:53] (current)
uk [code]
Line 1: Line 1:
 ====== c-info-wand ====== ====== c-info-wand ======
 +
 +{{:​projects:​c-info-wall.jpg?​200|}}
  
 ===== elektronic ===== ===== elektronic =====
  
   * connected launchpad   * connected launchpad
-  * 3 RGB LED stripes +  * 3 RGB LED stripes ​(common +) 
-  * PWM PINs:+  * MOSFETs: IRL540N 
 +  * Schaltung ist wie beim Ingress-Table:​ https://​github.com/​c-base/​ingress-table#​led-driver-circuit 
 +  * PWM-PINs in RGB-Dreier-Gruppen: 
 +    * erste Gruppe: PM_3, PD_1, PD_0 
 +    * zweite Gruppe: PL_4, PL_5, PM_1 
 +    * dritte Gruppe: PM_7, PA_7, PM_6 
 +  * Pinout siehe: http://​energia.nu/​img/​EK-TM4C1294XL.jpg 
 +===== code ===== 
 + 
 +  * Sourcecode uses energia: http://​energia.nu/​ 
 +  * Sourcecode on github: https://​gist.github.com/​uwekamper/​ebefbdc992248407a1e7 
 + 
 +<​code>​ 
 +/* 
 +  Fade for c-info wall at c-base with MQTT 
 +*/ 
 + 
 +#include <​SPI.h>​ 
 +#include <​Ethernet.h>​ 
 +#include <​PubSubClient.h>​ 
 + 
 +// Apparently the preprocessor variables B0 and B1 are already taken. 
 +// Therefore we use the prefix CBASE 
 + 
 +#define CBASER0 PM_3 
 +#define CBASEG0 PD_1 
 +#define CBASEB0 PD_0 
 + 
 +#define CBASER1 PL_4 
 +#define CBASEG1 PL_5 
 +#define CBASEB1 PM_1 
 + 
 +#define CBASER2 PM_7 
 +#define CBASEG2 PA_7 
 +#define CBASEB2 PM_6 
 + 
 +int brightness = 50;    // how bright the LED is 
 +int fadeAmount = 1;    // how many points to fade the LED by 
 +int fadeCounter = 0; 
 + 
 +// MQTTServer to use 
 +char server[] = "​c-beam.cbrp3.c-base.org";​ 
 + 
 +void callback(char* topic, byte* payload, unsigned int length) { 
 +  Serial.print("​Received message for topic "); 
 +  Serial.print(topic);​ 
 +  Serial.print("​with length "); 
 +  Serial.println(length);​ 
 +  Serial.println("​Message:"​);​ 
 +  Serial.write(payload,​ length); 
 +  Serial.println();​ 
 +  fadeCounter = 20; 
 +
 + 
 +EthernetClient ethClient;​ 
 +PubSubClient client(server,​ 1883, callback, ethClient);​ 
 + 
 + 
 +void setup() ​ {  
 +  pinMode(CBASER0,​ OUTPUT); 
 +  pinMode(CBASEG0,​ OUTPUT); 
 +  pinMode(CBASEB0,​ OUTPUT); 
 +  pinMode(CBASER1,​ OUTPUT); 
 +  pinMode(CBASEG1,​ OUTPUT); 
 +  pinMode(CBASEB1,​ OUTPUT); 
 +  pinMode(CBASER2,​ OUTPUT); 
 +  pinMode(CBASEG2,​ OUTPUT); 
 +  pinMode(CBASEB2,​ OUTPUT); 
 +   
 +  Serial.begin(115200);​ 
 +   
 +  Serial.print("​Ethernet starting."​);​ 
 +   
 +  // Start Ethernet with the build in MAC Address 
 +  Ethernet.begin(0);​ 
 + 
 +  Serial.print("​My IP address: "); 
 +  Serial.println(Ethernet.localIP());​ 
 +}  
 + 
 +void doFade() { 
 +  while(true) { 
 +    if (brightness < 50) { 
 +      fadeAmount = 1; 
 +      brightness = 50; 
 +      return; 
 +    } 
 +   
 +    if (brightness >= 200) { 
 +      fadeAmount = -1; 
 +    } 
 +   
 +    // There was some problem with the upper-most LED stripe. 
 +    // That is why we just set this one to full brightness forever. 
 +    if(fadeCounter > 0) { 
 +      analogWrite(CBASER0,​ 0); 
 +      analogWrite(CBASEG0,​ 0); 
 +      analogWrite(CBASEB0,​ 255); 
 +    }  
 +    else { 
 +      analogWrite(CBASER0,​ 255); 
 +      analogWrite(CBASEG0,​ 0); 
 +      analogWrite(CBASEB0,​ 0); 
 +    } 
 +   
 +    // The rest of the wall is pulsing. 
 +    analogWrite(CBASER1,​ brightness);​ 
 +    analogWrite(CBASEG1,​ brightness);​ 
 +    analogWrite(CBASEB1,​ brightness);​ 
 +    analogWrite(CBASER2,​ brightness);​ 
 +    analogWrite(CBASEG2,​ brightness);​ 
 +    analogWrite(CBASEB2,​ brightness);​ 
 +    delay(10);​ 
 +    brightness = brightness + fadeAmount;​ 
 +     
 +  } 
 +
 + 
 +void loop() { 
 +  if (!client.connected()) { 
 +    Serial.println("​Disconnected. Reconnecting...."​);​
  
 +    if(!client.connect("​c-info"​)) {
 +      Serial.println("​Connection failed"​);​
 +    } else {
 +      Serial.println("​Connection success"​);​
 +      if(client.subscribe("​user/​boarding"​)) {
 +        Serial.println("​Subscription 2 successfull"​);​
 +      }
 +    }
 +  }
 +  ​
 +  client.loop();​
 +  Serial.print("​fadeCounter:​ ");
 +  Serial.println(fadeCounter);​
 +  doFade(); ​
 +  if (fadeCounter > 0) {
 +    fadeCounter--;​
 +  }
 +  delay(800);
 +}
  
 +</​code>​
projects/c-info-wand.1429413202.txt.gz · Last modified: 2015/04/19 05:13 by smile