This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| projects:c-info-wand [2015/04/19 03:13] – created smile | projects:c-info-wand [2015/04/25 01:53] (current) – [code] uk | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== c-info-wand ====== | ====== c-info-wand ====== | ||
| + | |||
| + | {{: | ||
| ===== elektronic ===== | ===== elektronic ===== | ||
| * connected launchpad | * connected launchpad | ||
| - | * 3 RGB LED stripes | + | * 3 RGB LED stripes |
| - | * PWM PINs: | + | * MOSFETs: IRL540N |
| + | * Schaltung ist wie beim Ingress-Table: | ||
| + | * 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:// | ||
| + | ===== code ===== | ||
| + | |||
| + | * Sourcecode uses energia: http:// | ||
| + | * Sourcecode on github: https:// | ||
| + | |||
| + | < | ||
| + | /* | ||
| + | Fade for c-info wall at c-base with MQTT | ||
| + | */ | ||
| + | |||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | // 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[] = " | ||
| + | |||
| + | void callback(char* topic, byte* payload, unsigned int length) { | ||
| + | Serial.print(" | ||
| + | Serial.print(topic); | ||
| + | Serial.print(" | ||
| + | Serial.println(length); | ||
| + | Serial.println(" | ||
| + | Serial.write(payload, | ||
| + | Serial.println(); | ||
| + | fadeCounter = 20; | ||
| + | } | ||
| + | |||
| + | EthernetClient ethClient; | ||
| + | PubSubClient client(server, | ||
| + | |||
| + | |||
| + | void setup() | ||
| + | pinMode(CBASER0, | ||
| + | pinMode(CBASEG0, | ||
| + | pinMode(CBASEB0, | ||
| + | pinMode(CBASER1, | ||
| + | pinMode(CBASEG1, | ||
| + | pinMode(CBASEB1, | ||
| + | pinMode(CBASER2, | ||
| + | pinMode(CBASEG2, | ||
| + | pinMode(CBASEB2, | ||
| + | |||
| + | Serial.begin(115200); | ||
| + | |||
| + | Serial.print(" | ||
| + | |||
| + | // Start Ethernet with the build in MAC Address | ||
| + | Ethernet.begin(0); | ||
| + | |||
| + | Serial.print(" | ||
| + | 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, | ||
| + | analogWrite(CBASEG0, | ||
| + | analogWrite(CBASEB0, | ||
| + | } | ||
| + | else { | ||
| + | analogWrite(CBASER0, | ||
| + | analogWrite(CBASEG0, | ||
| + | analogWrite(CBASEB0, | ||
| + | } | ||
| + | |||
| + | // The rest of the wall is pulsing. | ||
| + | analogWrite(CBASER1, | ||
| + | analogWrite(CBASEG1, | ||
| + | analogWrite(CBASEB1, | ||
| + | analogWrite(CBASER2, | ||
| + | analogWrite(CBASEG2, | ||
| + | analogWrite(CBASEB2, | ||
| + | delay(10); | ||
| + | brightness = brightness + fadeAmount; | ||
| + | |||
| + | } | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | if (!client.connected()) { | ||
| + | Serial.println(" | ||
| + | if(!client.connect(" | ||
| + | Serial.println(" | ||
| + | } else { | ||
| + | Serial.println(" | ||
| + | if(client.subscribe(" | ||
| + | Serial.println(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | | ||
| + | client.loop(); | ||
| + | Serial.print(" | ||
| + | Serial.println(fadeCounter); | ||
| + | doFade(); | ||
| + | if (fadeCounter > 0) { | ||
| + | fadeCounter--; | ||
| + | } | ||
| + | delay(800); | ||
| + | } | ||
| + | </ | ||