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 03:13] – created smileprojects:c-info-wand [2015/04/25 01:53] (current) – [code] uk
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 03:13 by smile