Buona sera a tutti, ho un piccolo problema con la seriale, cioè, (premetto che tutto lo scketch, è in un mio precedente post), quando avvio tutto il programma che funziona tramite bluetooth con app android, programma creato con vb.net, il tutto per accendere o spegnere prese e 1 luce, quando avvio la luce collegata tramite relè passo passo, il programma vb.net mi dice che la seriale non è aperta dopo che aziono sia vb.net che l app. Mentre se uso solo l app android il tutto funzione alla perfezione, se uso solo il vb.net il tutto funziona ma se uso entranbi la seriale si perde.
Boh!!!!!
Anticipando che, per il REGOLAMENTO, punto 15 e suoi sottopunti, SE viene fuori che sono problemi di collegamento con l'impianto di casa (... prese, punto luce, ecc.), debbo chiudere il thread ...
... finchè parliamo solo di problemi di uso simultaneo di devices seriali, NON c'è problema.
Di che scheda Arduino stiamo parlando ? A che pin hai collegato il modulo Bluetooth ?
Guglielmo
Ricordo di aver letto quel thread, ma se stai proseguendo qui magari oltre alle info che ti ha chiesto Guglielmo posta nuovamente lo sketch, non vorrai costringere le persone a cercare ti tuoi post, aprire il thread, e cercare dove hai postato l'ultima versione vero?
Non puoi accedere da 2 programmi (app e VB.net) alla stessa com.
buona sera a tutti questo è il mio codice
#include <SoftwareSerial.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
/*********************************************************************/
#define BT_TX_PIN 5
#define BT_RX_PIN 4
/*********************************************************************/
SoftwareSerial mySerial(BT_TX_PIN, BT_RX_PIN);
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,16,2);
/*********************************************************************/
char lettera; //inizializzo carattere
char buffer[16];
String voice;
int rele1 = 6;
int rele2 = 7;
int rele3 = 8;
int rele4 = 9;
int rele5 = 10;
int rele6 = 11;
int rele7 = 12;
int rele8 = 13;
int previousSec = 0;
int stato;
uint8_t SPENTO[8] = {0x0E, 0x11, 0x11, 0x11, 0x0A, 0x0E, 0x0E, 0x04,};
uint8_t ACCESO[8] = {0x0E, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x04,};
void accenditutto() {
digitalWrite (rele1, LOW);
digitalWrite (rele2, LOW);
digitalWrite (rele3, LOW);
digitalWrite (rele4, LOW);
}
void spegnitutto() {
digitalWrite (rele1, HIGH);
digitalWrite (rele2, HIGH);
digitalWrite (rele3, HIGH);
digitalWrite (rele4, HIGH);
}
void accendilampada() {
digitalWrite (rele1, LOW);
Serial.println("relay 1 off");
viewSocket( 1,false );
}
void spegnilampada() {
digitalWrite (rele1, HIGH);
Serial.println("relay 1 on");
viewSocket( 1,true );
}
void accendiflipper() {
digitalWrite (rele2, LOW);
Serial.println("relay 2 off");
viewSocket( 2,false );
}
void spegniflipper() {
digitalWrite (rele2, HIGH);
Serial.println("relay 2 on");
viewSocket( 2,true );
}
void accenditv() {
digitalWrite (rele3, LOW);
Serial.println("relay 3 off");
viewSocket( 3,false );
}
void spegnitv() {
digitalWrite (rele3, HIGH);
Serial.println("relay 3 on");
viewSocket( 3,true );
}
/*********************************************************************/
void setup() {
lcd.backlight();
Serial.begin(9600);
mySerial.begin(9600);
Wire.begin();
RTC.begin();
lcd.init();
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
pinMode(rele5, OUTPUT);
pinMode(rele6, OUTPUT);
pinMode(rele7, OUTPUT);
pinMode(rele8, OUTPUT);
digitalWrite(rele1, HIGH);
digitalWrite(rele2, HIGH);
digitalWrite(rele3, HIGH);
digitalWrite(rele4, HIGH);
digitalWrite(rele5, HIGH);
digitalWrite(rele6, HIGH);
digitalWrite(rele7, HIGH);
digitalWrite(rele8, HIGH);
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
lcd.createChar(0, SPENTO);
lcd.createChar(1, ACCESO);
lcd.setCursor (0, 0);
lcd.print("Ciabatta BT v.2");
delay(2000);
lcd.clear();
lcd.setCursor (12, 0);
lcd.write(0);
lcd.write(0);
lcd.write(0);
lcd.write(0);
}
/*********************************************************************/
void loop() {
while(Serial.available()) {
delay(10);
char c=Serial.read();
if(c=='#')
{break; }
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);
if (voice == "*accendi tutto")
{accenditutto() ; }
else if (voice == "*spegni tutto")
{spegnitutto() ; }
else if (voice == "*accendi lampada")
{accendilampada() ; }
else if (voice == "*spegni lampada")
{spegnilampada() ; }
else if (voice == "*accendi flipper")
{accendiflipper() ; }
else if (voice == "*spegni flipper")
{spegniflipper() ; }
else if (voice == "*accendi tv")
{accenditv() ; }
else if (voice == "*spegni tv")
{spegnitv() ; }
voice="";
}
DateTime now = RTC.now();
if(now.second() != previousSec) {
lcd.setCursor( 0,0 );
sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.print( buffer );
previousSec = now.second();
}
if(mySerial.available()) { // se il serial buffer contiene almeno un carattere
lettera = mySerial.read(); // leggi il buffer
switch (lettera) {
case 'A':
digitalWrite(rele1, LOW); // eccita il relay1
Serial.println("relay 1 on");
viewSocket( 1,true );
delay(100);
digitalWrite(rele1, HIGH); // diseccita il relay1
Serial.println("relay 1 off");
viewSocket( 1,false );
delay(100);
break;
case 'S':
digitalWrite(rele1, HIGH); // diseccita il relay1
Serial.println("relay 1 off");
viewSocket( 1,false );
break;
case 'Q':
digitalWrite(rele2, LOW); // eccita il relay2
Serial.println("relay 2 on");
viewSocket( 2,true );
break;
case 'W':
digitalWrite(rele2, HIGH); // diseccita il relay2
Serial.println("relay 2 off");
viewSocket( 2,false );
break;
case 'E':
digitalWrite(rele3, LOW); // eccita il relay3
Serial.println("relay 3 on");
viewSocket( 3,true );
break;
case 'R':
digitalWrite(rele3, HIGH); // diseccita il relay3
Serial.println("relay 3 off");
viewSocket( 3,false );
break;
case 'T':
digitalWrite(rele4, LOW); // eccita il relay4
Serial.println("relay 4 on");
viewSocket( 4,true );
break;
case 'Y':
digitalWrite(rele4, HIGH); // diseccita il relay4
Serial.println("relay 4 off");
viewSocket( 4,false );
break;
case 'U':
digitalWrite(rele5, LOW); // eccita il relay5
Serial.println("relay 5 on");
viewSocket( 5,true );
break;
case 'I':
digitalWrite(rele5, HIGH); // diseccita il relay5
Serial.println("relay 5 off");
viewSocket( 5,false );
break;
case 'O':
digitalWrite(rele6, LOW); // eccita il relay6
Serial.println("relay 6 on");
viewSocket( 6,true );
break;
case 'P':
digitalWrite(rele6, HIGH); // diseccita il relay6
Serial.println("relay 6 off");
viewSocket( 6,false );
break;
case 'D':
digitalWrite(rele7, LOW); // eccita il relay7
Serial.println("relay 7 on");
viewSocket( 7,true );
break;
case 'F':
digitalWrite(rele7, HIGH); // diseccita il relay7
Serial.println("relay 7 off");
viewSocket( 7,false );
break;
case 'G':
digitalWrite(rele8, LOW); // eccita il relay8
Serial.println("relay 8 on");
viewSocket( 8,true );
break;
case 'H':
digitalWrite(rele8, HIGH); // diseccita il relay8
Serial.println("relay 8 off");
viewSocket( 8,false );
break;
}
}
stato = Serial.read();
if(stato =='A') {
digitalWrite(rele1, LOW);
delay (100);
digitalWrite(rele1, HIGH);
}else if (stato =='S'){
digitalWrite(rele1, HIGH);
}if(stato =='Q') {
digitalWrite(rele2, LOW);
}else if (stato =='W'){
digitalWrite(rele2, HIGH);
}if(stato =='E') {
digitalWrite(rele3, LOW);
}else if (stato =='R'){
digitalWrite(rele3, HIGH);
}if(stato =='T') {
digitalWrite(rele4, LOW);
}else if (stato =='Y'){
digitalWrite(rele4, HIGH);
}if(stato =='U') {
digitalWrite(rele5, LOW);
}else if (stato =='I'){
digitalWrite(rele5, HIGH);
}if(stato =='O') {
digitalWrite(rele6, LOW);
}else if (stato =='P'){
digitalWrite(rele6, HIGH);
}if(stato =='D') {
digitalWrite(rele7, LOW);
}else if (stato =='F'){
digitalWrite(rele7, HIGH);
}if(stato =='G') {
digitalWrite(rele8, LOW);
}else if (stato =='H'){
digitalWrite(rele8, HIGH);
}else if (stato =='J'){
digitalWrite(rele1,HIGH);
digitalWrite(rele2,HIGH);
digitalWrite(rele3,HIGH);
digitalWrite(rele4,HIGH);
digitalWrite(rele5,HIGH);
digitalWrite(rele6,HIGH);
digitalWrite(rele7,HIGH);
digitalWrite(rele8,HIGH);
}
}
void viewSocket(byte num, boolean status) {
lcd.setCursor( ( 11+num ),0 );
if ( status ) {
lcd.write(1);
lcd.setCursor ( 0,1 );
lcd.print("Acceso rele ");
} else {
lcd.write(0);
lcd.setCursor ( 0,1 );
lcd.print("Spento rele ");
}
lcd.setCursor ( 12,1 );
lcd.print(num);
}
Grazie uwefed per la risposta, ma perche questo mi succede solo se aziono il rele 1 dove è collegato un rele passo passo e non succede niente sugli altri rele che funzionano normalmente?
Grazie mille.
Ps un altra domanda
Dal mio cod. Si può leggere che stavo cercando di usare i comandi vocali ma questi non funzionano, cioè se sposto i pin rx e tx del modulo bluetooth nei pin rx e tx di arduino si accende solo il rele 1,perchè? E poi ce un altro modo per usare i comandi vocali nei pin da me impostati per il modulo bluetooth o sono pin fissi e non si possono spostare? Grazie mille e scusate per le troppe domande
Buona sera a tutti, viste che non ce soluzione al mio problema volevo chiedervi, ma se collego una ethernet shield e mi collego dal cell tramite il browser e non piu tramite l app è fattibile usate vb.net e il web browser?
Grazie mille