Motorizzazione tapparelle con telecomando

Buonasera, prima di imbattermi nell'avventura volevo chiedere a voi un consiglio in merito al progetto che mi sta balenando in testa.
Casa mia è composta da 5 stanze con tapparelle : sala 4, cucina 1, bagno 1, camera piccola 2, camera grande 2.
Con un pò di fatica dovre riuscire a portare la 220V dentro ad ogni cassonetto sfruttando i cavidotti dell'antifurto.
Non mi piace vedere cavi in vista e, oltremodo, dovrei pue fare i conti con la moglie per questa cosa. Per cui mi risulta difficile far passare un concetto estetico di cavo a vista che scende dal cassonetto per andare ad una scatoletta con i 2 pulsanti per l'azionamento.

Pensavo quindi ad una cosa simile : ad ogni stanza un telecomando bluetooth o wifi o radio in generale realizzato con un piccolo Arduino alimentato con piccole lipo life a lunga durata (sullo stile delle lipo life che usano per i sensori radio degli antifurti che sono da 3,8V) dove poter selezionare la singola tapparella da azionare ed ovviamente il relativo movimento (su o giù).

Questo mi permetterebbe di avere 4 telecomandi fissati a muro in punti strategici (il bango lo faccio rientrare in una camera) dai quali poter comandare comodamente le 10 tapparelle senza dover posare nesusn cavo a vista.

Nell'immaginario dovrebbe poi esserci un Arduino "centrale" che mi da la possibilità di comandare con 1 solo comando la chiusura o apertura di tutte e 10 le tapparelle da casa o da remoto (tramite l'antifurto ma qui è un problema già risolto a monte nel senso che sono già dotato di scheda domotica per controllare dei relèa distanza via sms o web).

Secondo voi è fattibile? O è troppo fantascentifico? Si accettano in primis critiche all'idea pazza o suugerimenti per cercare di portare a termine l'idea. Diciamo che se riuscissi a trovare una linea di progetto per realizzare il tutto in questo modo, mi butto nella sperimentazione delle motorizzazioni; diversamente potrei lasciar perdere fin dal principio.

Grazie

Cè un cavo di allarme su ogni cassonetto di ciascuna tapparella?
Questi cavi fanno entra ed esci tra le tapparelle o ciascuno va in centrale?
Cosa c'è sulle tapparelle un magnete ? un roller?
l'antifurto sfrutta un sistema bus?
Che modello è la centrale?

Ogni tapparella ha il suo corrugato che va in centrale. Il sensore è il classico roller quindi credo sia abbastanza immune a disturbi portati dalla 220V.
In ogni caso ho diverse possibilità di regolazione della sensibilità e del conteggio con l'antifurto (TecnoAlarm nuovissimo). Da quel lato mi sento abbastanza confidente nel non dover creare falsi allarmi. Almeno, mi sembra che questo sia il tuo dubbio maggiore. Se è quetso, chiaramente ben venga :slight_smile:

Ovviamente ho la possibilità di intercettare i cavi prima dell'entrata nel contenitore dell'antifurto grazie ad una pre scatola di derivazione

Nel frattempo mi maturano le idee di base.
Pensavo che la soluzione migliore potrebbe essere così fatta : al posto di ogni avvolgitore, metterei la classica mascherina con i classici pulsanti sali/scendi. All'interno un radiocomando codificato per individuare la tapparella da azionare, 1 arduino che riceve i segnali dei singoli radiocomandi e con una sk relè aziona i relè della tapparella di competenza.
In questo modo potrei molto agevolmente interfacciarmo con l'antifurto per mandare un comando di chiusura generale o di apertura generale.

Il problema è che non riesco a trovare uno schema di un radiocomando codificato a 2 semplici pulsanti. Potete indicarmene qualcuno?

Grazie

Perfetto tecnoalarm ha le interfacce per fare quello che ti serve utilizzando lo stesso bus, la stessa centrale e le periferiche di accesso .. Devi solo aggiungere su ogni cassonetto una schedina con 2 relè.. Programmabili in bistabile monostabile temporizzato Ora non mi ricordo il codice della schedina. poi ovviamente va programmato il sistema con apposito software

pablos:
Perfetto tecnoalarm ha le interfacce per fare quello che ti serve utilizzando lo stesso bus, la stessa centrale e le periferiche di accesso .. Devi solo aggiungere su ogni cassonetto una schedina con 2 relè.. Programmabili in bistabile monostabile temporizzato Ora non mi ricordo il codice della schedina. poi ovviamente va programmato il sistema con apposito software

Grazie per la risposta. Mi stai aprendo gli occhi su un mondo non ancora ben conosciuto. Però mi vengono dei dubbi che ti scrivo.

-> Se io collego le tapparelle tramite la sk relè, mi rimane comunque il problema di cablare con i classici 2 pulsanti ogni singola tapparella e vorrei evitare di far scendere un filo dal cassonetto per andare dentro l'incavo dell'avvolgitore (le mogli.....per un cavettino o una canalina a vista sai mai che casino ti piantano....)

-> Per azionarle singolarmente avrei bisogno di 10 telecomandi, mentre la centrale ne gestisce solo 8. Da qui che pensavo che con una sk Arduino, 1 solo comando lo uso per farle chiudere tutte ed un altro solo comando (totale solo 2 telecomandi della tecnoalarm) per aprirle tutte ma poi con i pulsanti su ognuna, agisco sulle singole.

-> se non cablo ogni singola tapparella con i relativi pulsanti, sarei costretto ad usare ogni volta la tastiera UTS della tecnoalarm e qui ritorniamo al fatto che gestisce solo 8 telecomandi.

Se invece trovo un radiocomando piccolino per ogni tapparella che viene letto da un Arduino unico, ogni tapparella è indipendente ma con un poche righe di codice, dico ad Arduino che quando riceve un impulso da un relè della TA (ho già la sk che ne gestisce 8) chiude tutto e quando riceve un impulso da un altro relè apre tutto. Ovviamente anche pure da remoto tramite l'app ma anche via telefono.

Inoltre le sk relè della TA sono sicuramente assai affidabili come tutto l'impianto, ma costano un botto...una in ogni cassonetto sarebbe un mega investimento. Per altro, quelle da 2 relè non ne ho viste

Che ne dici?

Duqnue, dopo attenta analisi dei percorsi fisici e soprattutto dei tubi che ho a disposizione, ho scoperto che la situazione non è così rosea.
Su 10 tapparelle, ne ho 4 o 5 che non riesco a raggiungere se non con i 2 cavi della 220V e basta. Purtroppo ci sono dei tubi da 16 con già dentro 2 cavi dell'antifurto che non posso modificare.

Il progetto quindi avrebbe davvero bisogno di una configurazione di questo tipo :
in ogni cassonetto arrivo con la 220V ma poi devo sistemare all'interno una sk relè per poter pilotare il motore prendendo la fase e mettendola (tramite i relè) o in salita o in discesa ma NON riesco ad arrivare con i fili apposta. Devo quindi arrivare tramite radiocomando.

Quindi ho bisogno di una rx all'interno di ogni cassonetto che mi comanda 2 relè (uno per salire e uno per scendere). Tanto la rx quanto il tx di ogni pulsante, deve essere codificato per evitare di comandare una tapparella diversa. (Pulsante 1 e 2 : tapparella 1; pulsante 3 e 4 tapparella 2 e così via).

Sto girando all'impazzata su internet per trovare una sk con 2 relè e un rx per ricevere i segnali da 2 pulsanti (a muro) con una tx.

Qualcuno riesce ad aiutarmi?

Grazie mille :slight_smile:

come no ...
trovi schede a 1,2,4,8,12,16 channel 433 ... 433.92 ...Mhz

https://www.google.it/search?q=433+schede+relè&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAWoVChMI7JG0rrvKyAIVg7MUCh3EjAbL&biw=1440&bih=752

esistere esistono, non ti resta che scegliere il rivenditore più affidabile.
Purtroppo con una scdeda da 16 fai solo 8 serrande e tutti i relè sono concentrati in un punto.
Dovresti prendere 10 schedine da 2 relè ciascuna che abbia 2 telecomandi, ti ritrovi con 20 telecomandi dove 10 li attacchi al muro, uno per ogni stanza, e altri 10 li smonti e li colleghi ad arduino, non è proprio il massimo dell'eleganza ma è fattibile. Comunque un sistema wireless con 20 frequenze in gioco non è che mi dia gran sicurezza, non tanto perchè qualcuno la può aprire per entrare, piuttosto che esista già nel vicinato una di quelle freq in uso, non è bello che l'allarme ti scatti quando non ci sei solo perchè qualcuno ha aperto il suo garage

Altrimenti vai su un sistema somfy rolling code che è più affidabile, ma costoso.
Mi viene in mente anche un sistema ad onde convogliate, ma i motori quando girano distruggono tutti i segnali, sarebbe da provare ...
Il metodo migliore in assoluto è con il cavo, non ci sono storie.

domanda

  • Se ti ritrovi senza pulsanti sali-scendi, vuoldire che queste serrande non sono ancora motorizzate
  • quei cavi di allarme che dici ciascuna serranda va in centrale (che mi sembra strano) non ha dei fili disponibili da poter sfruttare? alla fine te ne servono solo 2 per ogni serranda e il GND lo metti in comune al tuo alimentatore 12vdc che sarà un altro e non quello della centrale

Grazie delle risposte.
Vediamo i punti : innanzitutto l'antifurto ha soltanto 2 contatti via radio che sono cantina e garage (il quale è nella casa di fianco) quindi in realtà se ci fossero disturbi significativi nel vicinato da rischiare di far saltare l'allarme, probabilmente sarebbe già successo anche se ovviamente non posso averne la certezza. Di sicuro abitandoci da 20 anni, posso dire che a portata di telecomando, penso non ci sia nessuno che ne usi.
Sempre la parte radio dell'antifurto funziona su 2 frequenze la 433 e la 868 Mh. Devo chiedere all'installatore se i sensori funzionano su entrambe le frequenze o solo su una o sull'altra. Non saprei...
Il sw della centrale permette delle analisi in tempo reale sulle frequenze indicate e fino ad ora, ogni volta che ci metto il naso, non vedo disturbi ma ovviamente anche qui non posso avere delle certezze.
In buona sostanza, alla fine, per ora mi fido parecchio visto che ho solo 2 contatti via radio e le possibilità di monitoraggio da remoto sono molte anche in caso di allarme che scatta.

Pensavo cmq di acquistarne una di queste per fare delle prove proprio per via di eventuali disturbi con l'antifurto.

I cavi dei sensori, si ti confermo che ce n'è uno per ogni sensore. NOn è strano perchè l'impianto è stato fatto 20 anni fa quando ancora non c'erano concezioni di un cavo unico che fà da bus.

Lato eleganza ci avevo già pensato e la soluzione per me sarebbe elementare : ogni telecomando alla finestra lo smonto per collegargli i pulsanti "tradizionali" da casa e annego il telecomando all'interno del vano dell'attuale arrotolatore della cinghia della tapparella.
Lato centralizzato invece non è un problema perchè chiuderei Arduino e tutto il resto in una scatola che imbosco senza problemi in un posto non visibile.

Cmq farlo per farlo, anche le schede rolling code non hanno poi un così insostenibile costo. Magari anche le zegbee... Ora indago bene sui costi.

Un pò a rilento ma vado avanti con le idee.
Dopo attenta analisi delle tubazioni in questione, sono giunto alla conclusione che posso fisicamente fare una cosa di questo tipo :

  • elettrificazione a 220V di ogni cassonetto portando semplicemente i 3 fili (in alcuni casi solo 2...niente terra, non credo che riuscirò a farla passare
  • sempre dentro ogni cassonetto mentre faccio passare la 220V riesco di sicuro ad infilare un paio di coppie di doppino telefonico sguainato
  • ad ogni cassonetto una sk 2 relè alimentata da un alimentatorino a 5V i cui relè vengono comandati dai doppini telefonici
  • una sk Arduino MEGA che comanda il tutto

Spero, viste le distanze relatovamente brevi (max 10 metri a stima ma anche meno di sicuro), che la MEGA mi possa comandare direttamente le varie sk relè.

Su questo aspetto mi potete consolare con la vostra esperienza?

Per i pulsanti di azionamento normali, sto cercando delle soluzioni di pulsantiere che siano installabili direttamente a parete senza scasso per la solita scatola 503, da mettere subito a ridosso delle scatole già presenti a muro di modo da potermi infilare dentro e sfruttare le canalizzazioni esistenti. Anche qui con doppini telefonici che non occupano praticamente spazio. Con quetsi pulsanti vado a infilarmi direttamente dentro la MEGA per dare i comandi alle singole tapparelle.

A proposito : qualcuno sa consigliarmi delle pulsantiere il più piatte possibile da poter appiccicare direttamente a parete?

Il tutto, come sempre, con interfacciamento con l'antifurto. Della serie che quando lo inserisco, a seconda che inserisco un programma piuttosto che un altro, me le chiude tutte piuttosto che solo a metà o solo alcune e così via. Questo aspetto è facilissimo.

Ciao sono nuovo, penso che si possa fare tutto nella vita, dipende a che costo, comunque io pensavo ad una soluzione un pò complessa ma fattibile potrebbe essere questa:
per ogni tapparella avrai bisogno di d2 arduino ( 1 nel cassonetto con modulo rx 433 e 2 schedina con 2 relè e 1 con modulo tx 433 nei pressi del comando a pulsante) con libreria rc-switch o simili, per quanto riguarda i costi devi ordinarli dalla cina se vuoi risparmiare

20 arduino pro mini circa 40 €
10 coppie tx/rx circa 20 €
10 moduli 2 relè circa 20 €

Se ti servono più info, sono sempre disponibile
Ciao!

plodovico:
Ciao sono nuovo, penso che si possa fare tutto nella vita, dipende a che costo, comunque io pensavo ad una soluzione un pò complessa ma fattibile potrebbe essere questa:
per ogni tapparella avrai bisogno di d2 arduino ( 1 nel cassonetto con modulo rx 433 e 2 schedina con 2 relè e 1 con modulo tx 433 nei pressi del comando a pulsante) con libreria rc-switch o simili, per quanto riguarda i costi devi ordinarli dalla cina se vuoi risparmiare

20 arduino pro mini circa 40 €
10 coppie tx/rx circa 20 €
10 moduli 2 relè circa 20 €

Se ti servono più info, sono sempre disponibile
Ciao!

Ciao e grazie del suggerimento. In realtà ci avevo già pensato ma la cosa iniziava a diventare un pò complicata. Avevo pensato ad un Arduino nano per ogni pulsantiera andando proprio verso la soluzione da te proposta ma tra costi, complicazioni e rischio interferenze con il modulo radio dell'antifurto (anche se usato solo per 2 contatti e cmq su qfrequenze leggermente diverse) e dopo attenta analisi delle canalizzazioni, ritengo la soluzione sopra descritta migliore dal punto vista economico e tecnologico.

Devo ancora vedere il discorso pulsantiere che purtroppo, per quanto rovisto sul web, non iresco a trovare :frowning:

Avrei bisogno di qualche info.
Ho iniziato ad acquistare 2 di queste sk relè http://www.ebay.it/itm/281345113537?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Sono optoisolate quindi dovrei poterne collegare una x tapparella (quindi 10) ed azionarle tutte contemporaneamente senza problemi di sovraccarichi sui pin di Arduino.
Mi confermate questa cosa? Dovrebbero avere lo stesso assorbimento di un led o li x li

Ho bisogno di un aiuto gentilmente.
Ho preso la Arduino MEGA 2560 con la quale avevo fatto alcune piccole cose e l'ho trafsormata per questo progetto.
Ho collegato 20 pulsanti (2 per tapparella, 10 tapperelle in tutto) e 20 led usando praticamente quasti tutti i pin. I pulsanti li ho collegati sui seguenti pin : 2-9 e 32-43. I led li ho collegati sui seguenti pin : 22-31 e 44-53.
I led tutti con la relativa resistenza.
L'idea era/è quella di usare uno sketch che ho trovato che sfrutta le resistenze di pull-up per i pulsanti.

Lo sketch lo allego qui di seguito :

//Definisce i PIN dei vari pulsanti

int PulsanteSalita01 = 35;
int PulsanteSalita02 = 37;
int PulsanteSalita03 = 39;
int PulsanteSalita04 = 41;
int PulsanteSalita05 = 43;
int PulsanteSalita06 = 9;
int PulsanteSalita07 = 7;
int PulsanteSalita08 = 5;
int PulsanteSalita09 = 3;
int PulsanteSalita10 = 33;
int PulsanteDiscesa01 = 34;
int PulsanteDiscesa02 = 36;
int PulsanteDiscesa03 = 38;
int PulsanteDiscesa04 = 40;
int PulsanteDiscesa05 = 42;
int PulsanteDiscesa06 = 6;
int PulsanteDiscesa07 = 3;
int PulsanteDiscesa08 = 4;
int PulsanteDiscesa09 = 2;
int PulsanteDiscesa10 = 32;

//Definisce i PIN dei led/relè x salita e discesa
int relsal01 = 50;
int reldis01 = 30;
int relsal02 = 52;
int reldis02 = 31;
int relsal03 = 51;
int reldis03 = 28;
int relsal04 = 53;
int reldis04 = 29;
int relsal05 = 48;
int reldis05 = 26;
int relsal06 = 49;
int reldis06 = 27;
int relsal07 = 46;
int reldis07 = 24;
int relsal08 = 47;
int reldis08 = 25;
int relsal09 = 44;
int reldis09 = 22;
int relsal10 = 45;
int reldis10 = 23;

void loop() {
// legge i pulsanti e li memorizza

int SAL01 = digitalRead (PulsanteSalita01);
int SAL02 = digitalRead (PulsanteSalita02);
int SAL03 = digitalRead (PulsanteSalita03);
int SAL04 = digitalRead (PulsanteSalita04);
int SAL05 = digitalRead (PulsanteSalita05);
int SAL06 = digitalRead (PulsanteSalita06);
int SAL07 = digitalRead (PulsanteSalita07);
int SAL08 = digitalRead (PulsanteSalita08);
int SAL09 = digitalRead (PulsanteSalita09);
int SAL10 = digitalRead (PulsanteSalita10);
int DIS01 = digitalRead (PulsanteDiscesa01);
int DIS02 = digitalRead (PulsanteDiscesa02);
int DIS03 = digitalRead (PulsanteDiscesa03);
int DIS04 = digitalRead (PulsanteDiscesa04);
int DIS05 = digitalRead (PulsanteDiscesa05);
int DIS06 = digitalRead (PulsanteDiscesa06);
int DIS07 = digitalRead (PulsanteDiscesa07);
int DIS08 = digitalRead (PulsanteDiscesa08);
int DIS09 = digitalRead (PulsanteDiscesa09);
int DIS10 = digitalRead (PulsanteDiscesa10);

if (SAL01 == HIGH)
digitalWrite(relsal01, HIGH);
else {digitalWrite(relsal01, LOW);}

if (SAL02 == HIGH)
digitalWrite(relsal02, HIGH);
else {digitalWrite(relsal02, LOW);}

if (SAL03 == HIGH)
digitalWrite(relsal03, HIGH);
else {digitalWrite(relsal03, LOW);}

if (SAL04 == HIGH)
digitalWrite(relsal04, HIGH);
else {digitalWrite(relsal04, LOW);}

if (SAL05 == HIGH)
digitalWrite(relsal05, HIGH);
else {digitalWrite(relsal05, LOW);}

if (SAL06 == HIGH)
digitalWrite(relsal06, HIGH);
else {digitalWrite(relsal06, LOW);}

if (SAL07 == HIGH)
digitalWrite(relsal07, HIGH);
else {digitalWrite(relsal07, LOW);}

if (SAL08 == HIGH)
digitalWrite(relsal08, HIGH);
else {digitalWrite(relsal08, LOW);}

if (SAL09 == HIGH)
digitalWrite(relsal09, HIGH);
else {digitalWrite(relsal09, LOW);}

if (SAL10 == HIGH)
digitalWrite(relsal10, HIGH);
else {digitalWrite(relsal10, LOW);}

if (DIS01 == HIGH)
digitalWrite(reldis01, HIGH);
else {digitalWrite(reldis01, LOW);}

if (DIS02 == HIGH)
digitalWrite(reldis02, HIGH);
else {digitalWrite(reldis02, LOW);}

if (DIS03 == HIGH)
digitalWrite(reldis03, HIGH);
else {digitalWrite(reldis03, LOW);}

if (DIS04 == HIGH)
digitalWrite(reldis04, HIGH);
else {digitalWrite(reldis04, LOW);}

if (DIS05 == HIGH)
digitalWrite(reldis05, HIGH);
else {digitalWrite(reldis05, LOW);}

if (DIS06 == HIGH)
digitalWrite(reldis06, HIGH);
else {digitalWrite(reldis06, LOW);}

if (DIS07 == HIGH)
digitalWrite(reldis07, HIGH);
else {digitalWrite(reldis07, LOW);}

if (DIS08 == HIGH)
digitalWrite(reldis08, HIGH);
else {digitalWrite(reldis08, LOW);}

if (DIS09 == HIGH)
digitalWrite(reldis09, HIGH);
else {digitalWrite(reldis09, LOW);}

if (DIS10 == HIGH)
digitalWrite(reldis10, HIGH);
else {digitalWrite(reldis10, LOW);}

}

Dovrebbe essere molto banale : assegno i pin ai pulsanti e ai led, leggo lo stato dei pin dei pulsanti (che hanno la resistenza di pull-up attivata) ed in base al pulsante premuto, accendo il led corrispondente che un domani sarà sostituito da dei relè optoisolati.

I problemi che riscontro sono i seguenti.

Innanzitutto una lentezza spaventosa nella compilazione dello sketch; la qual cosa non la notavo con il vecchio pc (un portatile dual core di 4 anni fa con W7). Ora uso un nuovo portatile asus dual core (niente di che, normale) ma con W10 e Arduino in versione 1.6.5

Dopodichè inevitabilmente nella compilazione mi da errore ma non riesco a capire.

L'errore è il seguente :

C:\Users\Pongi\AppData\Local\Temp\build4249349281004419201.tmp/core.a(main.cpp.o): In function main': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:40: undefined reference to setup'
collect2.exe: error: ld returned 1 exit status
Errore durante la compilazione

Mi sapete dire dove sto sbagliando?

Grazie mille

manca il Setup
dove devi assegnare il pinMode ( se input o output )

Brunello:
manca il Setup
dove devi assegnare il pinMode ( se input o output )

Ah, ecco
Uno per ogni pulsante e uno per ogni led?

Domada stupida ....

Ora li ho messi, ma mi da lo stesso errore

//Definisce i PIN dei vari pulsanti come INPUT

int PulsanteSalita01 = 35;
int PulsanteSalita02 = 37;
int PulsanteSalita03 = 39;
int PulsanteSalita04 = 41;
int PulsanteSalita05 = 43;
int PulsanteSalita06 = 9;
int PulsanteSalita07 = 7;
int PulsanteSalita08 = 5;
int PulsanteSalita09 = 3;
int PulsanteSalita10 = 33;
int PulsanteDiscesa01 = 34;
int PulsanteDiscesa02 = 36;
int PulsanteDiscesa03 = 38;
int PulsanteDiscesa04 = 40;
int PulsanteDiscesa05 = 42;
int PulsanteDiscesa06 = 6;
int PulsanteDiscesa07 = 3;
int PulsanteDiscesa08 = 4;
int PulsanteDiscesa09 = 2;
int PulsanteDiscesa10 = 32;

//Definisce i PIN dei led/relè x salita e discesa come OUTPUT
int relsal01 = 50;
int reldis01 = 30;
int relsal02 = 52;
int reldis02 = 31;
int relsal03 = 51;
int reldis03 = 28;
int relsal04 = 53;
int reldis04 = 29;
int relsal05 = 48;
int reldis05 = 26;
int relsal06 = 49;
int reldis06 = 27;
int relsal07 = 46;
int reldis07 = 24;
int relsal08 = 47;
int reldis08 = 25;
int relsal09 = 44;
int reldis09 = 22;
int relsal10 = 45;
int reldis10 = 23;

void loop() {
// legge i pulsanti e li memorizza

pinMode(PulsanteSalita01, INPUT);
pinMode(PulsanteSalita02, INPUT);
pinMode(PulsanteSalita03, INPUT);
pinMode(PulsanteSalita04, INPUT);
pinMode(PulsanteSalita05, INPUT);
pinMode(PulsanteSalita06, INPUT);
pinMode(PulsanteSalita07, INPUT);
pinMode(PulsanteSalita08, INPUT);
pinMode(PulsanteSalita09, INPUT);
pinMode(PulsanteSalita10, INPUT);
pinMode(PulsanteDiscesa01, INPUT);
pinMode(PulsanteDiscesa02, INPUT);
pinMode(PulsanteDiscesa03, INPUT);
pinMode(PulsanteDiscesa04, INPUT);
pinMode(PulsanteDiscesa05, INPUT);
pinMode(PulsanteDiscesa06, INPUT);
pinMode(PulsanteDiscesa07, INPUT);
pinMode(PulsanteDiscesa08, INPUT);
pinMode(PulsanteDiscesa09, INPUT);
pinMode(PulsanteDiscesa10, INPUT);

pinMode(relsal01, OUTPUT);
pinMode(relsal02, OUTPUT);
pinMode(relsal03, OUTPUT);
pinMode(relsal04, OUTPUT);
pinMode(relsal05, OUTPUT);
pinMode(relsal06, OUTPUT);
pinMode(relsal07, OUTPUT);
pinMode(relsal08, OUTPUT);
pinMode(relsal09, OUTPUT);
pinMode(relsal10, OUTPUT);

pinMode(reldis01, OUTPUT);
pinMode(reldis02, OUTPUT);
pinMode(reldis03, OUTPUT);
pinMode(reldis04, OUTPUT);
pinMode(reldis05, OUTPUT);
pinMode(reldis06, OUTPUT);
pinMode(reldis07, OUTPUT);
pinMode(reldis08, OUTPUT);
pinMode(reldis09, OUTPUT);
pinMode(reldis10, OUTPUT);

int SAL01 = digitalRead (PulsanteSalita01);
int SAL02 = digitalRead (PulsanteSalita02);
int SAL03 = digitalRead (PulsanteSalita03);
int SAL04 = digitalRead (PulsanteSalita04);
int SAL05 = digitalRead (PulsanteSalita05);
int SAL06 = digitalRead (PulsanteSalita06);
int SAL07 = digitalRead (PulsanteSalita07);
int SAL08 = digitalRead (PulsanteSalita08);
int SAL09 = digitalRead (PulsanteSalita09);
int SAL10 = digitalRead (PulsanteSalita10);
int DIS01 = digitalRead (PulsanteDiscesa01);
int DIS02 = digitalRead (PulsanteDiscesa02);
int DIS03 = digitalRead (PulsanteDiscesa03);
int DIS04 = digitalRead (PulsanteDiscesa04);
int DIS05 = digitalRead (PulsanteDiscesa05);
int DIS06 = digitalRead (PulsanteDiscesa06);
int DIS07 = digitalRead (PulsanteDiscesa07);
int DIS08 = digitalRead (PulsanteDiscesa08);
int DIS09 = digitalRead (PulsanteDiscesa09);
int DIS10 = digitalRead (PulsanteDiscesa10);

if (SAL01 == HIGH)
digitalWrite(relsal01, HIGH);
else {digitalWrite(relsal01, LOW);}

if (SAL02 == HIGH)
digitalWrite(relsal02, HIGH);
else {digitalWrite(relsal02, LOW);}

if (SAL03 == HIGH)
digitalWrite(relsal03, HIGH);
else {digitalWrite(relsal03, LOW);}

if (SAL04 == HIGH)
digitalWrite(relsal04, HIGH);
else {digitalWrite(relsal04, LOW);}

if (SAL05 == HIGH)
digitalWrite(relsal05, HIGH);
else {digitalWrite(relsal05, LOW);}

if (SAL06 == HIGH)
digitalWrite(relsal06, HIGH);
else {digitalWrite(relsal06, LOW);}

if (SAL07 == HIGH)
digitalWrite(relsal07, HIGH);
else {digitalWrite(relsal07, LOW);}

if (SAL08 == HIGH)
digitalWrite(relsal08, HIGH);
else {digitalWrite(relsal08, LOW);}

if (SAL09 == HIGH)
digitalWrite(relsal09, HIGH);
else {digitalWrite(relsal09, LOW);}

if (SAL10 == HIGH)
digitalWrite(relsal10, HIGH);
else {digitalWrite(relsal10, LOW);}

if (DIS01 == HIGH)
digitalWrite(reldis01, HIGH);
else {digitalWrite(reldis01, LOW);}

if (DIS02 == HIGH)
digitalWrite(reldis02, HIGH);
else {digitalWrite(reldis02, LOW);}

if (DIS03 == HIGH)
digitalWrite(reldis03, HIGH);
else {digitalWrite(reldis03, LOW);}

if (DIS04 == HIGH)
digitalWrite(reldis04, HIGH);
else {digitalWrite(reldis04, LOW);}

if (DIS05 == HIGH)
digitalWrite(reldis05, HIGH);
else {digitalWrite(reldis05, LOW);}

if (DIS06 == HIGH)
digitalWrite(reldis06, HIGH);
else {digitalWrite(reldis06, LOW);}

if (DIS07 == HIGH)
digitalWrite(reldis07, HIGH);
else {digitalWrite(reldis07, LOW);}

if (DIS08 == HIGH)
digitalWrite(reldis08, HIGH);
else {digitalWrite(reldis08, LOW);}

if (DIS09 == HIGH)
digitalWrite(reldis09, HIGH);
else {digitalWrite(reldis09, LOW);}

if (DIS10 == HIGH)
digitalWrite(reldis10, HIGH);
else {digitalWrite(reldis10, LOW);}

}

Arduino:1.6.5 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

C:\Users\Pongi\AppData\Local\Temp\build5946462320591885255.tmp/core.a(main.cpp.o): In function main': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:40: undefined reference to setup'
collect2.exe: error: ld returned 1 exit status
Errore durante la compilazione

Questo report potrebbe essere più ricco
di informazioni con
"Mostra un output dettagliato durante la compilazione"
abilitato in "File > Impostazioni"

Io di programmazione non ne faccio da un sacco di anni....

Io di programmazione non ne faccio da un sacco di anni…

e si vede…

i pinMode li devi inserire nella void setup() , che e’ quella che si mette prima della void loop()

e poi, quando inserisci uno sketch sul sito, usa i code TAG ( </> simbolo in alto a sinistra )

E poi, ma che ti serva solo come lezione, ci sono modi piu’ ottimizzati per scrivere quello che hai scritto

// creiamo degli Array con i pin a cui sono collegati i dispositivi
int pulsanti[] = {  35,37,39,41,43,9,7,5,3,33,34,36,38,40,42,6,3,4,2,32 };  
int pulsanti_totali = 20; 
int rele[] = { 50,52,51,53,48,49,46,47,44,45,30,31,28,29,26,27,24,25,22,23 };      
int rele_totali = 6; 

void setup() {
  for (int aa = 0; aa < pulsanti_totali; aa ++) {
    pinMode(pulsanti[aa], INPUT_PULLUP); // Mette i pin in input e abilita il PullUp
  }
    for (int aa = 0; aa < rele_totali; aa++) {
    pinMode(rele [aa], OUTPUT );
  }
}


void loop() {
for (int aa = 0; aa < pulsanti_totali; aa++ ) {
    if ( digitalRead (pulsanti[aa]) == LOW ) { // controlla se è stato premuto il pulsante
    digitalWrite (rele[aa], HIGH ) ; // Attiva il relativo relè 
     }
     else {
      digitalWrite (rele[aa], LOW ) ;
     }
} // fine ciclo di FOR
 }

A mio parere (forse sbaglio) per questo progetto un Arduino mi sembra sprecato.

Una domanda.
Da dove viene messo il radiocomando, quanti metri ci sono per la tapparella più lontana e quanti muri ci sono da attraversare?

Se le distanze sono limitate, si può utilizzare un telecomando “normale”. Se le distanze sono notevoli, si può utilizzare un telecomando “potenziato”.

In ogni cassonetto viene messo un ricevitore con i 2 relè necessari e un unico comando arriverà a tutti i ricevitori.

Spero di aver capito bene il tuo problema.

Saverio.

Brunello:
e si vede…

i pinMode li devi inserire nella void setup() , che e’ quella che si mette prima della void loop()

e poi, quando inserisci uno sketch sul sito, usa i code TAG ( </> simbolo in alto a sinistra )

E poi, ma che ti serva solo come lezione, ci sono modi piu’ ottimizzati per scrivere quello che hai scritto

// creiamo degli Array con i pin a cui sono collegati i dispositivi

int pulsanti = {  35,37,39,41,43,9,7,5,3,33,34,36,38,40,42,6,3,4,2,32 }; 
int pulsanti_totali = 20;
int rele = { 50,52,51,53,48,49,46,47,44,45,30,31,28,29,26,27,24,25,22,23 };     
int rele_totali = 6;

void setup() {
  for (int aa = 0; aa < pulsanti_totali; aa ++) {
    pinMode(pulsanti[aa], INPUT_PULLUP); // Mette i pin in input e abilita il PullUp
  }
    for (int aa = 0; aa < rele_totali; aa++) {
    pinMode(rele [aa], OUTPUT );
  }
}

void loop() {
for (int aa = 0; aa < pulsanti_totali; aa++ ) {
    if ( digitalRead (pulsanti[aa]) == LOW ) { // controlla se è stato premuto il pulsante
    digitalWrite (rele[aa], HIGH ) ; // Attiva il relativo relè
    }
    else {
      digitalWrite (rele[aa], LOW ) ;
    }
} // fine ciclo di FOR
}



:grin:

Grazie mille. Addirittura riscritto tutto in poche righe :grin:

Brunello:
e si vede…

i pinMode li devi inserire nella void setup() , che e’ quella che si mette prima della void loop()

e poi, quando inserisci uno sketch sul sito, usa i code TAG ( </> simbolo in alto a sinistra )

E poi, ma che ti serva solo come lezione, ci sono modi piu’ ottimizzati per scrivere quello che hai scritto

// creiamo degli Array con i pin a cui sono collegati i dispositivi

int pulsanti = {  35,37,39,41,43,9,7,5,3,33,34,36,38,40,42,6,3,4,2,32 }; 
int pulsanti_totali = 20;
int rele = { 50,52,51,53,48,49,46,47,44,45,30,31,28,29,26,27,24,25,22,23 };     
int rele_totali = 6;

void setup() {
  for (int aa = 0; aa < pulsanti_totali; aa ++) {
    pinMode(pulsanti[aa], INPUT_PULLUP); // Mette i pin in input e abilita il PullUp
  }
    for (int aa = 0; aa < rele_totali; aa++) {
    pinMode(rele [aa], OUTPUT );
  }
}

void loop() {
for (int aa = 0; aa < pulsanti_totali; aa++ ) {
    if ( digitalRead (pulsanti[aa]) == LOW ) { // controlla se è stato premuto il pulsante
    digitalWrite (rele[aa], HIGH ) ; // Attiva il relativo relè
    }
    else {
      digitalWrite (rele[aa], LOW ) ;
    }
} // fine ciclo di FOR; [quote author=Brunello link=msg=2459731 date=1446401615]
e si vede…

i pinMode li devi inserire nella void setup() , che e’ quella che si mette prima della void loop()

e poi, quando inserisci uno sketch sul sito, usa i code TAG            ( </>    simbolo in alto a sinistra )

E poi, ma che ti serva solo come lezione, ci sono modi piu’ ottimizzati per scrivere quello che hai scritto

[code]
// creiamo degli Array con i pin a cui sono collegati i dispositivi
int pulsanti = {  35,37,39,41,43,9,7,5,3,33,34,36,38,40,42,6,3,4,2,32 }; 
int pulsanti_totali = 20;
int rele = { 50,52,51,53,48,49,46,47,44,45,30,31,28,29,26,27,24,25,22,23 };     
int rele_totali = 6;

void setup() {
  for (int aa = 0; aa < pulsanti_totali; aa ++) {
    pinMode(pulsanti[aa], INPUT_PULLUP); // Mette i pin in input e abilita il PullUp
  }
    for (int aa = 0; aa < rele_totali; aa++) {
    pinMode(rele [aa], OUTPUT );
  }
}

void loop() {
for (int aa = 0; aa < pulsanti_totali; aa++ ) {
    if ( digitalRead (pulsanti[aa]) == LOW ) { // controlla se è stato premuto il pulsante
    digitalWrite (rele[aa], HIGH ) ; // Attiva il relativo relè
    }
    else {
      digitalWrite (rele[aa], LOW ) ;
    }
} // fine ciclo di FOR
}

Grazie mille. I miei studi risalgono all’epoca del Commodre 64 e dei primi 8088…
Ora mi metto a studiare le righe che mi hai scritto, che per me sono poco comprensibili.