RGB Strip led controlled with Bluetooth
Simply circuit for control a RGB strip led, with Arduino.
Components and supplies
1
Arduino Nano R3
1
Breadboard (generic)
1
Jumper wires (generic)
1
LED Strip, NeoPixel Digital RGB
1
DC-DC Buck (Step Down) Regulator, Adjustable
1
Resistor 220 ohm
1
HC-05 Bluetooth Module
1
Power MOSFET N-Channel
Apps and platforms
1
MIT App Inventor 2
Project description
Code
STRISCIA_LED_RGB_CON_BLUETOOTH.ino
c_cpp
1#include <SoftwareSerial.h> 2SoftwareSerial BTSerial(8, 9); 3int bluPin = 6; 4int verdePin = 5; 5int rossoPin = 3; 6int x; 7void setup(){ 8pinMode(rossoPin, OUTPUT); 9pinMode(verdePin, OUTPUT); 10pinMode(bluPin, OUTPUT); 11Serial.begin(38400); 12BTSerial.begin(38400); 13while(!Serial) {} 14} 15 16void loop(){ 17if (BTSerial.available()){ 18char oke = BTSerial.read(); 19Serial.write(oke); 20 21if (oke == 'b') { 22analogWrite(bluPin, 255); //blu 23} 24if (oke == 'z') { 25analogWrite(bluPin, 0); 26} 27 28if (oke == 'r') { 29analogWrite(rossoPin, 255); //rosso 30} 31if (oke == 'z') { 32analogWrite(rossoPin, 0); 33} 34 35if (oke == 'g') { 36analogWrite(verdePin, 255); //verde 37} 38if (oke == 'z') { 39analogWrite(verdePin, 0); 40} 41 42if (oke == 'w') { 43analogWrite(bluPin, 255); //bianco 44analogWrite(rossoPin, 255); 45analogWrite(verdePin, 255); 46} 47if (oke == 'z') { 48analogWrite(bluPin, 0); 49analogWrite(rossoPin, 0); 50analogWrite(verdePin, 0); 51} 52 53if (oke == 'a') { 54analogWrite(rossoPin, 255); 55analogWrite(verdePin, 40); //arancione 56} 57if (oke == 'z') { 58analogWrite(verdePin, 0); 59analogWrite(rossoPin, 0); 60} 61 62if (oke == 'y') { 63analogWrite(rossoPin, 255); 64analogWrite(verdePin, 150); //giallo 65} 66if (oke == 'z') { 67analogWrite(verdePin, 0); 68analogWrite(rossoPin, 0); 69} 70 71if (oke == 'v') { 72analogWrite(rossoPin, 140); 73analogWrite(bluPin, 250); //viola 74} 75if (oke == 'z') { 76analogWrite(rossoPin, 0); 77analogWrite(bluPin, 0); 78} 79 80if (oke == 'c') { 81analogWrite(verdePin, 255); 82analogWrite(bluPin, 255); //ciano 83} 84if (oke == 'z') { 85analogWrite(verdePin, 0); 86analogWrite(bluPin, 0); 87} 88 89if (oke == 'm') { 90analogWrite(rossoPin, 255); 91analogWrite(bluPin, 80); //magenta 92} 93if (oke == 'z') { 94analogWrite(rossoPin, 0); 95analogWrite(bluPin, 0); 96} 97 98if (oke == 's') { 99while(x < 1000){ 100for(int i = 0; i < 256; i++){ //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 101rgb(255-i, i, 0); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 102delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 103} 104for(int i = 0; i < 256; i++){ 105 //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 106rgb(0, 255-i, i); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 107delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 108} 109for(int i = 0; i < 256; i++){ //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 110rgb(i, 0, 255-i); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 111delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 112} 113x = x + 1; 114} 115} 116} 117} 118void rgb(int rosso, int verde, int blu){ 119 analogWrite(rossoPin, rosso); 120 analogWrite(verdePin, verde); 121 analogWrite(bluPin, blu); 122} 123
STRISCIA_LED_RGB_CON_BLUETOOTH.ino
c_cpp
1#include <SoftwareSerial.h> 2SoftwareSerial BTSerial(8, 9); 3int bluPin = 6; 4int verdePin = 5; 5int rossoPin = 3; 6int x; 7void setup(){ 8pinMode(rossoPin, OUTPUT); 9pinMode(verdePin, OUTPUT); 10pinMode(bluPin, OUTPUT); 11Serial.begin(38400); 12BTSerial.begin(38400); 13while(!Serial) {} 14} 15 16void loop(){ 17if (BTSerial.available()){ 18char oke = BTSerial.read(); 19Serial.write(oke); 20 21if (oke == 'b') { 22analogWrite(bluPin, 255); //blu 23} 24if (oke == 'z') { 25analogWrite(bluPin, 0); 26} 27 28if (oke == 'r') { 29analogWrite(rossoPin, 255); //rosso 30} 31if (oke == 'z') { 32analogWrite(rossoPin, 0); 33} 34 35if (oke == 'g') { 36analogWrite(verdePin, 255); //verde 37} 38if (oke == 'z') { 39analogWrite(verdePin, 0); 40} 41 42if (oke == 'w') { 43analogWrite(bluPin, 255); //bianco 44analogWrite(rossoPin, 255); 45analogWrite(verdePin, 255); 46} 47if (oke == 'z') { 48analogWrite(bluPin, 0); 49analogWrite(rossoPin, 0); 50analogWrite(verdePin, 0); 51} 52 53if (oke == 'a') { 54analogWrite(rossoPin, 255); 55analogWrite(verdePin, 40); //arancione 56} 57if (oke == 'z') { 58analogWrite(verdePin, 0); 59analogWrite(rossoPin, 0); 60} 61 62if (oke == 'y') { 63analogWrite(rossoPin, 255); 64analogWrite(verdePin, 150); //giallo 65} 66if (oke == 'z') { 67analogWrite(verdePin, 0); 68analogWrite(rossoPin, 0); 69} 70 71if (oke == 'v') { 72analogWrite(rossoPin, 140); 73analogWrite(bluPin, 250); //viola 74} 75if (oke == 'z') { 76analogWrite(rossoPin, 0); 77analogWrite(bluPin, 0); 78} 79 80if (oke == 'c') { 81analogWrite(verdePin, 255); 82analogWrite(bluPin, 255); //ciano 83} 84if (oke == 'z') { 85analogWrite(verdePin, 0); 86analogWrite(bluPin, 0); 87} 88 89if (oke == 'm') { 90analogWrite(rossoPin, 255); 91analogWrite(bluPin, 80); //magenta 92} 93if (oke == 'z') { 94analogWrite(rossoPin, 0); 95analogWrite(bluPin, 0); 96} 97 98if (oke == 's') { 99while(x < 1000){ 100for(int i = 0; i < 256; i++){ //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 101rgb(255-i, i, 0); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 102delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 103} 104for(int i = 0; i < 256; i++){ 105 //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 106rgb(0, 255-i, i); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 107delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 108} 109for(int i = 0; i < 256; i++){ //for il ciclo che esegue Arduino, si sceglie di usare 256 che corrisponde alla massima tensione che Arduino riesce ad applicare(circa 5V) in PWM. 110rgb(i, 0, 255-i); //rgb Arduino riconosce che si riferisce ai 16 milioni di colori replicabili dai led RGB(255x255x255 massima tensione che si pu applicare ad ogni pin) 111delay(10); // semplice delay (che tradotto dall'inglese il ritardo di una cosa) che se diminuito si vedono meno colori e ci saranno luci pi fastidiose e intense, se si d pi delay il contrario di quanto precedentemente descritto 112} 113x = x + 1; 114} 115} 116} 117} 118void rgb(int rosso, int verde, int blu){ 119 analogWrite(rossoPin, rosso); 120 analogWrite(verdePin, verde); 121 analogWrite(bluPin, blu); 122} 123
Downloadable files
Circuit
https://www.tinkercad.com/things/8lnnN8gG2M5
Circuit

Comments
Only logged in users can leave comments