Sto cercando di realizzare una luce notturna che possa cambiare colore utilizzando una app sullo smartphone.
Le componenti che uso sono: Arduino UNO, modulo bluetooth HC05 e led RGB.
Ho connesso il modulo CH05 in questo modo: GND - GND, +5V - 5V, TX - 2, RX - 3
Uso questo codice:
#include <SoftwareSerial.h>
int redpin = 11;
int greenpin = 10;
int blupin = 9;
SoftwareSerial bluetooth(2,3);
int red, green, blu;
char c;
int baud = 9600;
void setup(){
Serial.begin(baud);
bluetooth.begin(baud);
pinMode(redpin,OUTPUT);
pinMode(greenpin,OUTPUT);
pinMode(blupin,OUTPUT);
}
void loop(){
while(bluetooth.available()>0){
c = bluetooth.read();
Serial.write(c);
}
}
e dal monitor seriale ricevo un output del tipo:
rosso,verde,blu,0,0,0
dove rosso, verde e blu sono i valori che ottengo spostando lo slider dell'app avanti e indietro.
Il mio intento sarebbe quello di prendere quei valori e inserirli in un analogWrite() ma, dopo aver fatto diverse prove, non sono riuscito ad ottenere nulla.
Ho cominciato da poco ad usare Arduino ma, sapendo usare MatLab, ho provato con il comando red = c e ottengo questo errore: * *Prova2.ino: In function ‘void loop()’: Prova2.ino:22:14: error: invalid types ‘char[int]’ for array subscript* * Grazie in anticipo per l'aiuto (sperando di aver dato tutte le informazioni necessarie).
Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiIN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda: - serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - pinout delle varie schede by xxxPighi: Pinout - link generali utili: Link Utili
#include <SoftwareSerial.h>
int redpin = 11;
int greenpin = 10;
int blupin = 9;
SoftwareSerial bluetooth(2,3);
int red, green, blu;
char c;
int baud = 9600;
void setup(){
Serial.begin(baud);
bluetooth.begin(baud);
pinMode(redpin,OUTPUT);
pinMode(greenpin,OUTPUT);
pinMode(blupin,OUTPUT);
}
void loop(){
while(bluetooth.available()>0){
c = bluetooth.read();
red = c[1];
Serial.write(c);
}
}
L'unica cosa che ha di diverso da quello sopra è che ho provato ad assegnare alla variabile red il primo valore della variabile c.
L'app che uso sullo smartphone si chiama Arduino Bluetooth RGB LEDs.
Credevo che lo smartphone inviasse dall'app un array con i valori corrispondenti ai tre slider perché, col comando Serial.write(c), visualizzavo un output del tipo:
77,0,0,0,0,0
e, spostando avanti lo slider rosso per esempio, ottengo:
90,0,0,0,0,0
Se vado ad agire su tutti e tre gli slider ottengo sul monitor seriale una risposta di questo tipo:
72,77,135,0,0,0
quindi avevo pensato, forse ingenuamente, che ogni slider modificasse uno dei valori e che c fosse un array da cui potevo estrarre il valore desiderato e usarlo in un comando analogWrite().
Ho letto diversi forum che trattano questo argomento ma non sono riuscito a trovare una soluzione.
Mi sfugge qualcosa?