Trasmettitore Contatore WIFI
salve tutti, dopo un bel po' di tempo mi sono rimesso spippolare con arduino...
sono alle prese con un trasmettitore wi-fi ( nfr24l01+ )..
il mio progettino consiste in un trasmettitore che attiva in remoto un rele per tot volte ( contate ad ogni trasmissione ) al raggiungimento di un valore impostato in partenza il trasmettitore si blocca e il giocatore deve tornare farlo riattivare..
serve per un controllo di quante palline il giocatore usa.. troppe = rimessa di soldi per il gestore..
vado al nocciolo del problema..
ho composto il codice sbirciando vari esempi tra menù, keypad, lcd e rf24..
nel complesso funziona quasi tutto, ovvero:
il menù ( menwiz ) funziona egregiamente... fra l'altro ho cercato di utilizzare la tastiera prima per impostare il valore delle palline e successivamente per il conteggio e funziona...
lcd funziona...
keypad funziona...
contatore funziona....
il problema è che quando inserisco la riga per far trasmettere il codice alla ricevente si blocca il contatore e devo resettare l'arduino...
ho provato ad inserirla dentro lo switch... fuori... ovunque... ma niente!!!
vi allego lo sketch...
potreste dirmi dove sbaglio??
premetto che le connessioni sono giuste ho fatto varie prove con l'esempio getting started della libreria rf24 e funzionano...
le alimentazioni sono giuste ( basetta per nrf24 ) e regolatore di tensione 5v.
sicuramente sono un tordo io, ma è una settimana che ci sbatto la testa e non riesco venirne capo...
vi ringrazio...
buona serata...
sono alle prese con un trasmettitore wi-fi ( nfr24l01+ )..
il mio progettino consiste in un trasmettitore che attiva in remoto un rele per tot volte ( contate ad ogni trasmissione ) al raggiungimento di un valore impostato in partenza il trasmettitore si blocca e il giocatore deve tornare farlo riattivare..
serve per un controllo di quante palline il giocatore usa.. troppe = rimessa di soldi per il gestore..
vado al nocciolo del problema..
ho composto il codice sbirciando vari esempi tra menù, keypad, lcd e rf24..
nel complesso funziona quasi tutto, ovvero:
il menù ( menwiz ) funziona egregiamente... fra l'altro ho cercato di utilizzare la tastiera prima per impostare il valore delle palline e successivamente per il conteggio e funziona...
lcd funziona...
keypad funziona...
contatore funziona....
il problema è che quando inserisco la riga per far trasmettere il codice alla ricevente si blocca il contatore e devo resettare l'arduino...
ho provato ad inserirla dentro lo switch... fuori... ovunque... ma niente!!!
vi allego lo sketch...
potreste dirmi dove sbaglio??
code: [select]
#include <nrf24l01.h>
#include <rf24.h>
#include <rf24_config.h>
#include <lcd.h>
#include <liquidcrystal.h>
#include <liquidcrystal_i2c.h>
#include <spi.h>
#include <wire.h>
#include <menwiz.h>
#include <eeprom.h>
#include <key.h>
#include <keypad.h>
/* basato sull'esempio "yourduinostarter example: nrf24l01 transmit joystick values"
http://arduino-info.wikispaces.com/nrf24l01-2.4ghz-howto
http://www.danielealberti.it/2016/01/ricetrasmettitori-rf-per-arduino.html
collegamenti del modulo rf24l01 ad arduino:
1 - gnd
2 - vcc 3.3v !!! not 5v
3 - ce arduino pin 9
4 - csn arduino pin 10
5 - sck arduino pin 13
6 - mosi arduino pin 11
7 - miso arduino pin 12
8 - unused
*/
// configurazione contatore
# define sconta 12
# define rele 13
long valueimposta = 0;
long valueimposta1 = 0;
int valuesconta = 0;
int lastvalueconta = 0;
int lastvaluesconta = 0;
byte contaimpulsi = 0;
// fine configurazione contatore
#define ce_pin 10
#define csn_pin 53
const uint64_t pipe = 0xe8e8f0f0e1ll; // definisce il canale di trasmissione
rf24 radio(ce_pin, csn_pin); // stabilisce la comunicazione
int button1=6;
int button2=7;
int buttonstate1;
int buttonstate2;
int datatosend[1];
char key = '0';
// keypad setup
const byte rows = 4; //four rows
const byte cols = 4; //four columns
//define symbols on buttons of keypads
char hexakeys[rows][cols] = {
{'1', '2', '3', 'a'},
{'4', '5', '6', 'b'},
{'7', '8', '9', 'c'},
{'*', '0', '#', 'd'}
};
byte colpins[4] = {30, 31, 32, 33};
byte rowpins[4] = {34, 35, 36, 37};
//initialize instance of class newkeypad
keypad customkeypad = keypad( makekeymap(hexakeys), rowpins, colpins, rows, cols);
liquidcrystal lcd( 22, 23, 24, 25, 26, 27);
//create global object menu , lcd
menwiz menu;
//instantiate global variables bind menu
int tp=0;
float f=26.0;
boolean bb=0;
byte b=50;
void setup()
{
radio.begin();
radio.setpalevel(rf24_pa_min);
radio.setdatarate(rf24_250kbps);
radio.setchannel(123);
radio.openwritingpipe(pipe);
serial.begin(115200);
pinmode(rele, output );
lcd.begin(16, 2);
_menu *r,*s1,*s2;
_var *v;
int mem;
mem=menu.freeram();
// inizialize menu object (20 colums x 4 rows)
menu.begin(&lcd,16,2);
//create menu tree
r=menu.addmenu(mw_root,null,f(" menu")); //create root menu @ first (required)
//...associated terminal node , bind app variable "f" of type float
s2=menu.addmenu(mw_var,r,f("nr. tiratori")); //add terminal node (that "variable");
s2->addvar(mw_auto_int,&tp,50,50,1); //create variable of type "int"...
s1=menu.addmenu(mw_var,r,f(" salva dati")); //add terminal node (that "variable") create "action" associated terminal node...
s1->addvar(mw_action,savevar); //the act function default called when enter button pushed
s1=menu.addmenu(mw_var,r,f(" carica dati")); //add terminal node (that "variable") create "action" associated terminal node...
s1->addvar(mw_action,loadvar); //the act function default called when enter button pushed
menu.addusrnav(menukeys,4);
menu.addusrscreen(conto,3000);
}
void loop()
{
menu.draw();
}
void conto(){
menu.drawusrscreen(menu.sbuf);
static char buf[7];
strcpy(menu.sbuf,"conto piattelli"); //1st lcd line
strcat(menu.sbuf,"\nlanciato-->");
//-imposta il numero di pezzi ---
valueimposta=(tp*25);
valueimposta1 = (valueimposta);
char key = customkeypad.getkey();
switch (key) {
case no_key:
datatosend[0] = 0;
break;
case '1':
datatosend[0] = 1;
contaimpulsi = contaimpulsi + 1;
break;
case '2':
datatosend[0] = 2;
contaimpulsi = contaimpulsi + 1;
break;
case '3':
datatosend[0] = 3;
contaimpulsi = contaimpulsi + 1;
break;
case '4':
datatosend[0] = 4;
contaimpulsi = contaimpulsi + 1;
break;
case '5':
datatosend[0] = 5;
contaimpulsi = contaimpulsi + 1;
break;
case '6':
datatosend[0] = 6;
contaimpulsi = contaimpulsi + 1;
break;
}
// radio.write (datatosend, sizeof(datatosend)) ; se tolgo il commento si blocca tutto....
lcd.setcursor(13, 1);
lcd.print(contaimpulsi);
/* //---------- decrementa con input su pin12 ----
valuesconta = digitalread(sconta);
if ( valuesconta != lastvaluesconta)
{ if ( valuesconta == high)
{ contaimpulsi = contaimpulsi - 1;
lcd.setcursor(13, 1);
lcd.print(contaimpulsi);
serial.println(contaimpulsi);
delay(20); }}// debouncetime
lastvaluesconta = valuesconta;
*/
/*---- -----confronto fra due dati --------
se valore comntatore è uguale valore
impostato eccita relè.at */
if ( valueimposta1 == contaimpulsi)
{ digitalwrite(rele, high);
serial.println("rele on");
contaimpulsi = 0;
digitalwrite(rele, low);
lcd.clear();
delay(30);
while(1);}
}
void savevar(){
menu.writeeeprom();
}
void loadvar(){
menu.readeeprom();
}
int menukeys() \\ 4 tasti che uso per impostare il numero delle palline
{
char keypressed = customkeypad.getkey(); // read keypad see if key has been pressed
switch (keypressed)
{
case no_key:
return mw_btnull; // no key pressed
break;
case 'c':
return mw_btd; // key 8 pressed direction down
break;
case 'b':
return mw_btr; // key 6 pressed direction right
break;
case 'd':
return mw_bte; // key * pressed escape
break;
case 'a':
return mw_btc; // key # pressed confirm
break;
}
while(1);
}
premetto che le connessioni sono giuste ho fatto varie prove con l'esempio getting started della libreria rf24 e funzionano...
le alimentazioni sono giuste ( basetta per nrf24 ) e regolatore di tensione 5v.
sicuramente sono un tordo io, ma è una settimana che ci sbatto la testa e non riesco venirne capo...
vi ringrazio...
buona serata...
forse hai dimenticato &:
radio.write (&datatosend, sizeof(datatosend));
radio.write (&datatosend, sizeof(datatosend));
Arduino Forum > International > Italiano > Software (Moderator: leo72) > Trasmettitore Contatore WIFI
arduino
Comments
Post a Comment