Buongiorno , sapete indicarmi un link alla mia domanda o rispondermi direttamente ?. Ho vari ingressi di Arduino mega collegati come in foto a dei pulsanti e resistenze pull down da 10 khom . Ad ogni pulsante è collegata un uscita che pilota un relè ottico ( alimentato separatamente da Arduino usando JD Vcc) per accendere dei led a 24 V , mi ritrovo spesso che pur non avendo premuto il pulsante il relè si trovi ad uno stato chiuso e quindi accenda la luce . Avevo pensato di abbassare la resistenza per avere un maggiore scarico oppure di inserire un diodo (anche led non necessario che si accenda) tra la resistenza e l'ingresso , come da freccia in foto , per non avere ritorni di segnale magari da un altro ingresso , premetto che non vengono mai premuti due pulsanti contemporaneamente , altrimenti non mi spiego per quale motivo avvengano questi disturbi nei pin definiti Digital IN da sketch . Grazie a chi può aiutarmi.
Se usi i pulldown devi disabilitare i pullup interni da 50k altrimenti ti ritrovi con 0.8V, oppure diminuisci le PD a 1K
Quello che dice OP è impossibile
Anche Icio, 0,8V non sono HIGH nemmeno per CPU a 3V3... E non capisco perché dover taroccare i valori, il problema è altrove
Quindi OP spiega di nuovo il problema, ricontrolla schema e mostra programma
Grazie Icio , quindi devo cambiare le resistenza da 10Khom a 1kHom il che non è un problema ma mi richiede tempo per risaldare le schede millefori che ho usato , eventualmente come posso disabilitare i pull up interni da 50 K ? così imparo una cosa nuova ? grazie mille .
ok , ora ricontrollo schema ( ma ho già controllato più volte con tester il valore delle resistenze e collegamenti ) e vi mando il programma , in ogni caso a volte mi trovo con delle luci accese in modo casuale e ieri dopo il temporale le ho trovate praticamente tutte accese , premetto che sto usando due arduino mega , hanno entrambi il solito problema ma ho notato che uno ha di più di disturbi , gli Arduino sono alimentati separatamente ed hanno praticamente la solita struttura di sketch . Anche per me è impossibile che avvenga ciò , è per questo che mi sono rivolto al Forum .
scusami ma per inviare il programma faccio un copia incolla o esiste una strada più consona ? grazie mille
Fai copia/incolla e lo racchiudi (obbligatoriamente) tra i tag "code" ovvero ... dopo averlo copiato, selezioni la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla, appunto, come codice. Non solo, ma, al fine di rendere il codice più leggibile, assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).
Guglielmo
Quanto sono lunghi i fili dei pulsanti e dove passano?
Quella bobina messa lì così sembra più che altro per produrre extratensioni...
I diodi sono già presenti su ogni ingresso.
È che portare in giro direttamente i 5V della logica non è che sia tanto meglio, almeno qualche burst RF viene risparmiato.
per me prima bisogna vedere il sorgente del programma
e solo dopo discutere di eventuali problemi
io non ho mai sentito di problemi del gensere "senza" un problema al cablaggio e/o alla logica
non sarebbe male nemmeno una foto del cablaggio
per OP: considera fatta la richiesta della foto
// ZONA GIORNO ARDUINO MEGA COM 5
#include <LiquidCrystal_I2C.h>
#define LED_PIN 3
int SRTraviVeranda = 0;
int SRTraveEsternaVeranda = 0;
int SRPresaPilotataVeranda = 0;
int SRLuciAlte = 0;
int SRTavoloCucina = 0;
int SRMensolaSXCucina = 0;
int SRMensolaDXCucina = 0;
int SRTraviCucina = 0;
int SRIngressoTravi = 0;
int SRScala = 0;
int SRIngressoLampadario = 0;
int SRTraveSoppalco = 0;
int SRTraveDoppia = 0;
int SRTraveMedia = 0;
int SRPresaPilotataSala = 0;
// Veranda
#define pTraviVeranda 39
#define TraviVeranda 22
#define pTraveEsternaVeranda 40
#define TraveEsternaVeranda 23
#define pPresaPilotataVeranda 41
#define PresaPilotataVeranda 24
//Cucina
#define pLuciAlte 42
#define LuciAlte 25
#define pTavoloCucina 43
#define TavoloCucina 26
#define pMensolaSXCucina 44
#define MensolaSXCucina 27
#define pMensolaDXCucina 45
#define MensolaDXCucina 28
#define pTraviCucina 46
#define TraviCucina 29
//Ingresso
#define pIngressoTravi 47
#define IngressoTravi 30
#define pScala 48
#define Scala 31
#define pIngressoLampadario 49
#define IngressoLampadario 32
//Sala
#define pTraveSoppalco 50
#define TraveSoppalco 33
#define pTraveDoppia 51
#define TraveDoppia 34
#define pTraveMedia 52
#define TraveMedia 35
#define pPresaPilotataSala 53
#define PresaPilotataSala 36
// Allarme e spegni tutto
#define pSpegniTutto 37
#define pAllarme 38
#define z = 1 // Variabile di intervallo fliccheraggio pulsanti
#define a = 1 //Variabile di intervallo per luci allarme
#define b = 1 //Variante di intervallo per spegni tutto
int uscitarele = 1000;
int pulsantepremuto = 0;
int uscita = 0;
int statoprecedente = 99;
String SERIALE = "";
LiquidCrystal_I2C lcd ( 0x27, 20, 4 );
String riga1 = "Benvenuti da Alberto";
String riga2 = "Lucia ";
String riga3 = "Samuele ";
String riga4 = "Tommaso ";
String azione = " ";
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
pinMode ( LED_PIN, OUTPUT );
analogWrite ( LED_PIN, 20 );
lcd.setCursor ( 0, 0 );
typewriting ( riga1 );
lcd.setCursor ( 0, 1 );
typewriting ( riga2 );
lcd.setCursor ( 0, 2 );
typewriting ( riga3 );
lcd.setCursor ( 0, 3 );
typewriting ( riga4 );
delay ( 100 );
analogWrite ( LED_PIN, 5 );
//Veranda
pinMode ( pTraviVeranda, INPUT ); // Travi Centrali 5V Ingresso 39
digitalWrite ( pTraviVeranda, LOW );
pinMode ( TraviVeranda, OUTPUT ); // Travi Centrali 24V
digitalWrite ( TraviVeranda, LOW );
pinMode ( pTraveEsternaVeranda, INPUT ); // Trave esterna 5V
digitalWrite ( pTraveEsternaVeranda, LOW );
pinMode ( TraveEsternaVeranda, OUTPUT ); // Trave esterna 24V
digitalWrite ( TraveEsternaVeranda, LOW );
pinMode ( pPresaPilotataVeranda, INPUT ); // Presa pilotata angolo 5V
digitalWrite ( pPresaPilotataVeranda, LOW );
pinMode ( PresaPilotataVeranda, OUTPUT ); // Presa pilotata angolo 24V
digitalWrite ( PresaPilotataVeranda, LOW );
//Cucina
pinMode ( pLuciAlte, INPUT ); // Luci alte 5V
digitalWrite ( pLuciAlte, LOW );
pinMode ( LuciAlte, OUTPUT ); // Luci alte 220V
digitalWrite ( LuciAlte, LOW );
pinMode ( pTavoloCucina, INPUT ); // Tavolo 5V
digitalWrite ( pTavoloCucina, LOW );
pinMode ( TavoloCucina, OUTPUT ); // Tavolo 220V
digitalWrite ( TavoloCucina, LOW );
pinMode ( pMensolaSXCucina, INPUT ); // Mensola SX 5V
digitalWrite ( pMensolaSXCucina, LOW );
pinMode ( MensolaSXCucina, OUTPUT ); // Mensola SX 24V
digitalWrite ( MensolaSXCucina, LOW );
pinMode ( pMensolaDXCucina, INPUT ); // Mensola DX 5V
digitalWrite ( pMensolaDXCucina, LOW );
pinMode ( MensolaDXCucina, OUTPUT ); // Mensola DX 24V
digitalWrite ( MensolaDXCucina, LOW );
pinMode ( pTraviCucina, INPUT ); // Travi 5V
digitalWrite ( pTraviCucina, LOW );
pinMode ( TraviCucina, OUTPUT ); // Travi 24V
digitalWrite ( TraviCucina, LOW );
// SALA
pinMode ( pTraveSoppalco, INPUT ); // Trave Soppalco 5V
digitalWrite ( pTraveSoppalco, LOW );
pinMode ( TraveSoppalco, OUTPUT ); // Trave Soppalco 24V
digitalWrite ( TraveSoppalco, LOW );
pinMode ( pTraveDoppia, INPUT ); // Trave Alta + Bassa 5V
digitalWrite ( pTraveDoppia, LOW );
pinMode ( TraveDoppia, OUTPUT ); // Trave Alta + Bassa 24V
digitalWrite ( TraveDoppia, LOW );
pinMode ( pTraveMedia, INPUT ); // Trave Media 5V
digitalWrite ( pTraveMedia, LOW );
pinMode ( TraveMedia, OUTPUT ); // Trave Media 24V
digitalWrite ( TraveMedia, LOW );
pinMode ( pPresaPilotataSala, INPUT ); // Presa Pilotata 5V
digitalWrite ( pPresaPilotataSala, LOW );
pinMode ( PresaPilotataSala, OUTPUT ); // Presa Pilotata 24V
digitalWrite ( PresaPilotataSala, LOW );
//Ingresso
pinMode ( pIngressoTravi, INPUT ); // Travi 5V
digitalWrite ( pIngressoTravi, LOW );
pinMode ( IngressoTravi, OUTPUT ); // Travi 24V
digitalWrite ( IngressoTravi, LOW );
pinMode ( pScala, INPUT ); // Scala 5V
digitalWrite ( pScala, LOW );
pinMode ( Scala, OUTPUT ); // Scala 24V
digitalWrite ( Scala, LOW );
pinMode ( pIngressoLampadario, INPUT ); // Lampadario 5V
digitalWrite ( pIngressoLampadario, LOW );
pinMode ( IngressoLampadario, OUTPUT ); // Lampadario 24V
digitalWrite ( IngressoLampadario, LOW );
//Allarme sPEGNI TUTTO
pinMode ( pAllarme, INPUT ); // Allarme
digitalWrite ( pAllarme, LOW );
pinMode ( pSpegniTutto, INPUT ); // Spegni tutto
digitalWrite ( pSpegniTutto, LOW );
Serial.begin ( 9600 );
Serial.println();
Serial.print ( " Ok ripartiamo" ); Serial.println();
Serial.println();
Serial.print ( "Travi veranda stato iniziale > " ); Serial.print ( SRTraviVeranda ); Serial.println();
Serial.print ( "Travi veranda esterna stato iniziale > " ); Serial.print ( SRTraveEsternaVeranda ); Serial.println();
Serial.print ( "Presa Pilotata stato iniziale > " ); Serial.print ( SRPresaPilotataVeranda ); Serial.println();
Serial.print ( "Cucina travi alte stato iniziale > " ); Serial.print ( SRLuciAlte ); Serial.println();
Serial.print ( "Cucina Tavolo stato iniziale > " ); Serial.print ( SRTavoloCucina ); Serial.println();
Serial.print ( "Cucina Mensola SX stato iniziale > " ); Serial.print ( SRMensolaSXCucina ); Serial.println();
Serial.print ( "Cucina mensola DX stato iniziale > " ); Serial.print ( SRMensolaDXCucina ); Serial.println();
Serial.print ( "Cucina travi stato iniziale > " ); Serial.print ( SRTraviCucina ); Serial.println();
Serial.print ( "Ingresso Travi stato iniziale > " ); Serial.print ( SRIngressoTravi ); Serial.println();
Serial.print ( "Scala stato iniziale > " ); Serial.print ( SRScala ); Serial.println();
Serial.print ( "Ingresso lampadario stato iniziale > " ); Serial.print ( SRIngressoLampadario ); Serial.println();
Serial.print ( "Sala trave soppalco stato iniziale > " ); Serial.print ( SRTraveSoppalco ); Serial.println();
Serial.print ( "Sala Trave doppia stato iniziale > " ); Serial.print ( SRTraveDoppia ); Serial.println();
Serial.print ( "Sala trave media stato iniziale > " ); Serial.print ( SRTraveMedia ); Serial.println();
Serial.print ( "sala Presa pilotata stato iniziale > " ); Serial.print ( SRPresaPilotataSala ); Serial.println();
Serial.print ( "#-------------------------------------------------#" ); Serial.println(); Serial.println();
// Veranda
}
void loop() {
// Allarme 38 zona Notte
//int ComunicazioneAllarme=37;
//Spegni Tutto 37 Notte
// Veranda trave centrale:
if ( digitalRead ( pTraviVeranda ) == HIGH && SRTraviVeranda == 0 ) {
digitalWrite ( TraviVeranda, HIGH );
// "Benvenuti da Alberto";
azione = "Veranda Travi CX OFF";
statoprecedente = SRTraviVeranda;
pulsantepremuto = pTraviVeranda;
uscitarele = TraviVeranda;
PRIMA();
Scrivi_su_LCD();
SRTraviVeranda = 1;
DOPO();
};
if ( digitalRead ( pTraviVeranda ) == HIGH && SRTraviVeranda == 1 ) {
digitalWrite ( TraviVeranda, LOW );
// "--------------------";
azione = "Veranda Travi CX ON";
statoprecedente = SRTraviVeranda;
pulsantepremuto = pTraviVeranda;
uscitarele = TraviVeranda;
PRIMA();
Scrivi_su_LCD();
SRTraviVeranda = 0;
DOPO();
};
// Veranda Trave Esterna:
if ( digitalRead ( pTraveEsternaVeranda ) == HIGH && SRTraveEsternaVeranda == 0 ) {
digitalWrite ( TraveEsternaVeranda, HIGH );
// "Benvenuti da Alberto";
azione = "Verand Trave EST OFF";
statoprecedente = SRTraveEsternaVeranda;
pulsantepremuto = pTraveEsternaVeranda;
uscitarele = TraveEsternaVeranda;
PRIMA();
Scrivi_su_LCD();
SRTraveEsternaVeranda = 1;
DOPO();
};
if ( digitalRead ( pTraveEsternaVeranda ) == HIGH && SRTraveEsternaVeranda == 1 ) {
digitalWrite ( TraveEsternaVeranda, LOW );
// "Benvenuti da Alberto";
azione = "Veranda Trave EST ON";
statoprecedente = SRTraveEsternaVeranda;
pulsantepremuto = pTraveEsternaVeranda;
uscitarele = TraveEsternaVeranda;
PRIMA ();
Scrivi_su_LCD();
SRTraveEsternaVeranda = 0;
DOPO();
};
// Veranda presa Pilotata:
if ( digitalRead ( pPresaPilotataVeranda ) == HIGH && SRPresaPilotataVeranda == 0 ) {
digitalWrite ( PresaPilotataVeranda, HIGH );
// "Benvenuti da Alberto";
azione = "Ver Pres Pilotat OFF";
statoprecedente = SRPresaPilotataVeranda;
pulsantepremuto = pPresaPilotataVeranda;
uscitarele = PresaPilotataVeranda;
PRIMA();
Scrivi_su_LCD();
SRTraveEsternaVeranda = 1;
DOPO();
};
if ( digitalRead ( pPresaPilotataVeranda ) == HIGH && SRPresaPilotataVeranda == 1 ) {
digitalWrite ( PresaPilotataVeranda, LOW );
// "Benvenuti da Alberto";
azione = "Ver Pres Pilotata ON";
statoprecedente = SRPresaPilotataVeranda;
pulsantepremuto = pPresaPilotataVeranda;
uscitarele = PresaPilotataVeranda;
PRIMA();
Scrivi_su_LCD();
SRPresaPilotataVeranda = 0;
DOPO();
};
// Cucina Luci Alte:
if ( digitalRead ( pLuciAlte ) == HIGH && SRLuciAlte == 0 ) {
digitalWrite ( LuciAlte, HIGH );
// "Benvenuti da Alberto";
azione = "Cucina Lampade OFF";
statoprecedente = SRLuciAlte;
pulsantepremuto = pLuciAlte;
uscitarele = LuciAlte;
PRIMA();
Scrivi_su_LCD();
SRLuciAlte = 1;
DOPO();
};
if ( digitalRead ( pLuciAlte ) == HIGH && SRLuciAlte == 1 ) {
digitalWrite ( LuciAlte, LOW );
// "Benvenuti da Alberto";
azione = "Cucina lampade ON";
statoprecedente = SRLuciAlte;
pulsantepremuto = pLuciAlte;
uscitarele = LuciAlte;
PRIMA();
Scrivi_su_LCD();
SRLuciAlte = 0;
DOPO();
};
// Cucina Luci Tavolo:
if ( digitalRead ( pTavoloCucina ) == HIGH && SRTavoloCucina == 0 ) {
digitalWrite ( TavoloCucina, HIGH );
// "Benvenuti da Alberto";
azione = "Cucina Tavolo OFF";
statoprecedente = SRTavoloCucina;
pulsantepremuto = pTavoloCucina;
uscitarele = TavoloCucina;
PRIMA();
Scrivi_su_LCD();
SRTavoloCucina = 1;
DOPO();
};
if ( digitalRead ( pTavoloCucina ) == HIGH && SRTavoloCucina == 1 ) {
digitalWrite ( TavoloCucina, LOW );
// "Benvenuti da Alberto";
azione = "Cucina Tavolo ON";
statoprecedente = SRTavoloCucina;
pulsantepremuto = pTavoloCucina;
uscitarele = TavoloCucina;
PRIMA();
Scrivi_su_LCD();
SRTavoloCucina = 0;
DOPO();
};
// Cucina mensola SX:
if ( digitalRead ( pMensolaSXCucina ) == HIGH && SRMensolaSXCucina == 0 ) {
digitalWrite ( MensolaSXCucina, HIGH );
// "Benvenuti da Alberto";
azione = "Cucina Mensol SX OFF";
statoprecedente = SRMensolaSXCucina;
pulsantepremuto = pMensolaSXCucina;
uscitarele = MensolaSXCucina;
PRIMA();
Scrivi_su_LCD();
SRMensolaSXCucina = 1;
DOPO();
};
if ( digitalRead ( pMensolaSXCucina ) == HIGH && SRMensolaSXCucina == 1 ) {
digitalWrite ( MensolaSXCucina, LOW );
// "Benvenuti da Alberto";
azione = "Cucina Mensola SX ON";
statoprecedente = SRMensolaSXCucina;
pulsantepremuto = pMensolaSXCucina;
uscitarele = MensolaSXCucina;
PRIMA();
Scrivi_su_LCD();
SRMensolaSXCucina = 0;
DOPO();
};
// Cucina mensole DX:
if ( digitalRead ( pMensolaDXCucina ) == HIGH && SRMensolaDXCucina == 0 ) {
digitalWrite ( MensolaDXCucina, HIGH );
// "Benvenuti da Alberto";
azione = "Cucina Mensol DX OFF";
statoprecedente = SRMensolaDXCucina;
pulsantepremuto = pMensolaDXCucina;
uscitarele = MensolaDXCucina;
PRIMA();
Scrivi_su_LCD();
SRMensolaDXCucina = 1;
DOPO();
};
if ( digitalRead ( pMensolaDXCucina ) == HIGH && SRMensolaDXCucina == 1 ) {
digitalWrite ( MensolaDXCucina, LOW );
// "Benvenuti da Alberto";
azione = "Cucina Mensola DX ON";
statoprecedente = SRMensolaDXCucina;
pulsantepremuto = pMensolaDXCucina;
uscitarele = MensolaDXCucina;
PRIMA();
Scrivi_su_LCD();
SRMensolaDXCucina = 0;
DOPO();
};
// Cucina Travi:
if ( digitalRead ( pTraviCucina ) == HIGH && SRTraviCucina == 0 ) {
digitalWrite ( TraviCucina, HIGH );
// "Benvenuti da Alberto";
azione = "Cucina Travi OFF";
statoprecedente = SRTraviCucina;
pulsantepremuto = pTraviCucina;
uscitarele = TraviCucina;
PRIMA();
Scrivi_su_LCD();
SRTraviCucina = 1;
DOPO();
};
if ( digitalRead ( pTraviCucina ) == HIGH && SRTraviCucina == 1 ) {
digitalWrite ( TraviCucina, LOW );
// "Benvenuti da Alberto";
azione = "Cucina Travi ON";
statoprecedente = SRTraviCucina;
pulsantepremuto = pTraviCucina;
uscitarele = TraviCucina;
PRIMA();
Scrivi_su_LCD();
SRTraviCucina = 0;
DOPO();
};
//ingresso Travi:
if ( digitalRead ( pIngressoTravi ) == HIGH && SRIngressoTravi == 0 ) {
digitalWrite ( IngressoTravi, HIGH );
// "Benvenuti da Alberto";
azione = "Ingresso Travi OFF";
statoprecedente = SRIngressoTravi;
pulsantepremuto = pIngressoTravi;
uscitarele = IngressoTravi;
PRIMA();
Scrivi_su_LCD();
SRIngressoTravi = 1;
DOPO();
};
if ( digitalRead ( pIngressoTravi ) == HIGH && SRIngressoTravi == 1 ) {
digitalWrite ( IngressoTravi, LOW );
// "Benvenuti da Alberto";
azione = "Ingresso Travi ON";
statoprecedente = SRIngressoTravi;
pulsantepremuto = pIngressoTravi;
uscitarele = IngressoTravi;
PRIMA();
Scrivi_su_LCD();
SRIngressoTravi = 0;
DOPO();
};
//ingresso scala rovere led :
if ( digitalRead ( pScala ) == HIGH && SRScala == 0 ) {
digitalWrite ( Scala, HIGH );
// "Benvenuti da Alberto";
azione = "Interrato Scala OFF";
statoprecedente = SRScala;
pulsantepremuto = pScala;
uscitarele = Scala;
PRIMA();
Scrivi_su_LCD();
SRScala = 1;
DOPO();
};
if ( digitalRead ( pScala ) == HIGH && SRScala == 1 ) {
digitalWrite ( Scala, LOW );
// "Benvenuti da Alberto";
azione = "Interrato Scala ON";
statoprecedente = SRScala;
pulsantepremuto = pScala;
uscitarele = Scala;
PRIMA();
Scrivi_su_LCD();
SRScala = 0;
DOPO();
};
// ingresso Lampadario:
if ( digitalRead ( pIngressoLampadario ) == HIGH && SRIngressoLampadario == 0 ) {
digitalWrite ( IngressoLampadario, HIGH );
// "Benvenuti da Alberto";
azione = "Ingresso Lampada OFF";
statoprecedente = SRIngressoLampadario;
pulsantepremuto = pIngressoLampadario;
uscitarele = IngressoLampadario;
PRIMA();
Scrivi_su_LCD();
SRIngressoLampadario = 1;
DOPO();
};
if ( digitalRead ( pIngressoLampadario ) == HIGH && SRIngressoLampadario == 1 ) {
digitalWrite ( IngressoLampadario, LOW );
// "Benvenuti da Alberto";
azione = "Ingresso lampada ON";
statoprecedente = SRIngressoLampadario;
pulsantepremuto = pIngressoLampadario;
uscitarele = IngressoLampadario;
PRIMA();
Scrivi_su_LCD();
SRIngressoLampadario = 0;
DOPO();
};
//Sala Trave Soppalco:
if ( digitalRead ( pTraveSoppalco ) == HIGH && SRTraveSoppalco == 0 ) {
digitalWrite ( TraveSoppalco, HIGH );
// "Benvenuti da Alberto";
azione = "Sala Tr soppalco OFF";
statoprecedente = SRTraveSoppalco;
pulsantepremuto = pTraveSoppalco;
uscitarele = TraveSoppalco;
PRIMA();
Scrivi_su_LCD();
SRTraveSoppalco = 1;
DOPO();
};
if ( digitalRead ( pTraveSoppalco ) == HIGH && SRTraveSoppalco == 1 ) {
digitalWrite ( TraveSoppalco, LOW );
// "Benvenuti da Alberto";
azione = "Sala Tr soppalco ON";
statoprecedente = SRTraveSoppalco;
pulsantepremuto = pTraveSoppalco;
uscitarele = TraveSoppalco;
PRIMA();
Scrivi_su_LCD();
SRTraveSoppalco = 0;
DOPO();
};
// Sala Trave Doppia:
if ( digitalRead ( pTraveDoppia ) == HIGH && SRTraveDoppia == 0 ) {
digitalWrite ( TraveDoppia, HIGH );
// "Benvenuti da Alberto";
azione = "Sala Trave DoppiaOFF";
statoprecedente = SRTraveDoppia;
pulsantepremuto = pTraveDoppia;
uscitarele = TraveDoppia;
PRIMA();
Scrivi_su_LCD();
SRTraveDoppia = 1;
DOPO();
};
if ( digitalRead ( pTraveDoppia ) == HIGH && SRTraveDoppia == 1 ) {
digitalWrite ( TraveDoppia, LOW );
// "Benvenuti da Alberto";
azione = "Sala Trave Doppia ON";
statoprecedente = SRTraveDoppia;
pulsantepremuto = pTraveDoppia;
uscitarele = TraveDoppia;
PRIMA();
Scrivi_su_LCD();
SRTraveDoppia = 0;
DOPO();
};
// Sala trave Media:
if ( digitalRead ( pTraveMedia ) == HIGH && SRTraveMedia == 0 ) {
digitalWrite ( TraveMedia, HIGH );
// "Benvenuti da Alberto";
azione = "Sala Trave Media OFF";
statoprecedente = SRTraveMedia;
pulsantepremuto = pTraveMedia;
uscitarele = TraveMedia;
PRIMA();
Scrivi_su_LCD();
SRTraveMedia = 1;
DOPO();
};
if ( digitalRead ( pTraveMedia ) == HIGH && SRTraveMedia == 1 ) {
digitalWrite ( TraveMedia, LOW );
// "Benvenuti da Alberto";
azione = "Sala Trave Media ON";
statoprecedente = SRTraveMedia;
pulsantepremuto = pTraveMedia;
uscitarele = TraveMedia;
PRIMA();
Scrivi_su_LCD();
SRTraveMedia = 0;
DOPO();
};
// Sala presa Pilotata SX:
if ( digitalRead ( pPresaPilotataSala ) == HIGH && SRPresaPilotataSala == 0 ) {
digitalWrite ( PresaPilotataSala, HIGH );
// "Benvenuti da Alberto";
azione = "Sala luce pilota OFF";
statoprecedente = SRPresaPilotataSala;
pulsantepremuto = pPresaPilotataSala;
uscitarele = PresaPilotataSala;
PRIMA();
Scrivi_su_LCD();
SRPresaPilotataSala = 1;
DOPO();
};
if ( digitalRead ( pPresaPilotataSala ) == HIGH && SRPresaPilotataSala == 1 ) {
digitalWrite ( PresaPilotataSala, LOW );
// "Benvenuti da Alberto";
azione = "Sala Luce pilota ON";
statoprecedente = SRPresaPilotataSala;
pulsantepremuto = pPresaPilotataSala;
uscitarele = PresaPilotataSala;
PRIMA();
Scrivi_su_LCD();
SRPresaPilotataSala = 0;
DOPO();
};
/*
AllarmE:
// Allarme
//if(Serial.available() > 0){SERIALE=Serial.read();};
//if (SERIALE=="allarme" && TraveSoppalco == LOW && TavoloCucina == LOW)
if(digitalRead(38)==HIGH && TraveSoppalco == LOW && TavoloCucina == LOW)
{
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
};
// if (SERIALE=="allarme" && TraveSoppalco == LOW && TavoloCucina == HIGH)
if(digitalRead(38)==HIGH && TraveSoppalco == LOW && TavoloCucina == HIGH)
{
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
};
// if (SERIALE=="allarme" && TraveSoppalco == HIGH && TavoloCucina == LOW)
if(digitalRead(38) == HIGH && TraveSoppalco == HIGH && TavoloCucina == LOW)
{
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, LOW);
delay(a);
};
// if(SERIALE=="allarme" && TraveSoppalco==HIGH && TavoloCucina==HIGH)
if(digitalRead(38)==HIGH&& TraveSoppalco==HIGH && TavoloCucina==HIGH)
{
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
digitalWrite(TraveSoppalco, LOW);
digitalWrite(TavoloCucina, LOW);
delay(a);
digitalWrite(TraveSoppalco, HIGH);
digitalWrite(TavoloCucina, HIGH);
delay(a);
}; //Fine dell'if Allarme
//Spegni Tutto
//if (SERIALE="spegni")
if(digitalRead(37)==HIGH)
{
digitalWrite(TraviVeranda, LOW);SRTraviVeranda=0;
digitalWrite(TraveEsternaVeranda, LOW);SRTraveEsternaVeranda=0;
digitalWrite(LuciAlte, LOW);SRLuciAlte=0;
digitalWrite(TavoloCucina, LOW);SRTavoloCucina=0;
digitalWrite(MensolaSXCucina, LOW);SRMensolaSXCucina=0;
digitalWrite(MensolaDXCucina, LOW);SRMensolaDXCucina=0;
digitalWrite(TraviCucina, LOW);SRTraviCucina=0;
digitalWrite(IngressoTravi, LOW);SRIngressoTravi=0;
digitalWrite(Scala, LOW);SRScala=0;
digitalWrite(IngressoLampadario, LOW);SRIngressoLampadario=0;
digitalWrite(TraveSoppalco, LOW);SRTraveSoppalco=0;
digitalWrite(TraveDoppia, LOW);SRTraveDoppia=0;
digitalWrite(TraveMedia, LOW);SRTraveMedia=0;
digitalWrite(TraviVeranda, LOW);SRTraviVeranda=0;
digitalWrite(PresaPilotataSala, LOW);SRPresaPilotataSala=0;
delay(a);
} //Fine dell'if dello spegni tutto
}
*/
} // Fine void loop
void PRIMA () {
/*
Serial.print("PRIMA >>>> ");
Serial.print (azione);
Serial.print(" - Stato precedente: ");
if (statoprecedente==0){Serial.print (" Acceso = ");};
if (statoprecedente==1){Serial.print (" Spento = ");};
Serial.print(statoprecedente);
Serial.println();
*/
}
void DOPO () {
/*
Serial.print("DOPO >>>> ");
Serial.print(azione);
Serial.println();
Serial.print("pulsante premuto = ");
Serial.println (pulsantepremuto);
Serial.print(" Canale uscita = ");
Serial.println(uscitarele);
Serial.print(" valore uscita = ");
Serial.print(digitalRead(uscitarele));
if (digitalRead(uscitarele)==0){Serial.print (" Acceso ");};
if (digitalRead(uscitarele)==1){Serial.print (" Spento ");};
Serial.println();
Serial.println("....................................................");
Serial.println();
*/
}
void Scrivi_su_LCD() {
/* Serial.println();
Serial.print("riga1 = ");Serial.print(riga1);Serial.println();
Serial.print("riga2 = ");Serial.print(riga2);Serial.println();
Serial.print("riga3 = ");Serial.print(riga3);Serial.println();
Serial.print("riga4 = ");Serial.print(riga4);Serial.println();
Serial.print("azione = ");Serial.print(azione);Serial.println();
*/
riga4 = riga3;
riga3 = riga2;
riga2 = riga1;
riga1 = azione;
analogWrite ( LED_PIN, 20 );
lcd.setCursor ( 0, 0 );
typewriting ( riga1 );
lcd.setCursor ( 0, 1 );
typewriting ( riga2 );
lcd.setCursor ( 0, 2 );
typewriting ( riga3 );
lcd.setCursor ( 0, 3 );
typewriting ( riga4 );
// delay(10);analogWrite(LED_PIN,20);
delay ( 10 ); analogWrite ( LED_PIN, 15 );
delay ( 10 ); analogWrite ( LED_PIN, 10 );
delay ( 10 ); analogWrite ( LED_PIN, 5 );
/*
Serial.println("----#----#----#----#----#----#----");
Serial.print("riga1 = ");Serial.print(riga1);Serial.println();
Serial.print("riga2 = ");Serial.print(riga2);Serial.println();
Serial.print("riga3 = ");Serial.print(riga3);Serial.println();
Serial.print("riga4 = ");Serial.print(riga4);Serial.println();
Serial.println();
Serial.print("---+---+---+--- FINE GIOCHI ---+---+---+---");Serial.println();Serial.println();
*/
}
void typewriting ( String messaggio ) {
int lunghezza = messaggio.length();
for ( int i = 0; i < lunghezza; i++ ) {
lcd.print ( messaggio[i] );
delay ( 10 );
}
}
questo è il cablaggio delle resistenze pull down .
il cavo che arriva dal pulsante è saldato con il cavo che va all'ingresso della scheda Arduino , quindi contatto continuo , il morsetto è connesso tramite saldatura ad una resistenza di 10 Khom la quale arriva al Gnd di Arduino.
ho usato la scheda con morsetti per facilitarmi le connessioni .
questo è il cablaggio , premetto che le schede relè sono alimentate separatamente dalle schede arduino mega tramite alimentatore posto tra i due LCD.
Aaagh!!!...
premetto che alcune parti di programma sono in via di sviluppo e le parti che riguardano il monitor mi servono per controllare cosa effettivamente sta facendo la scheda , quindi inutili al fine del progetto.
Complimenti per il cablaggio
Ma il programma è illeggibile
Formattalo come dio comanda
E diverrà leggibile, forse
Ma anche così ho visto due criticità
String riga1 = "Benvenuti da Alberto";
pinMode(pTraviVeranda, INPUT); // Travi Centrali 5V Ingresso 39
digitalWrite(pTraviVeranda,LOW);
Se non metti a posto queste due (intendo anche comprendere "perché " sono criticità) è inutile proseguire
Buon lavoro
Emmm ... riguardo al codice del tuo post #14 ... e si che ti ho anche scritto di "indentarlo correttamente" usando l'apposita funzione dell'IDE ... è indentato in modo illegibile
Guglielmo
ho provato a seguire le sue istruzioni ma non mi è riuscito , perdonate la mia non conoscenza , ci riprovo a seguire le sue istruzioni , grazie