errore su accensione led

buona sera ho un problema su questo sketch scusatemi come l ho scritto ma cosi mi aiuto a capirlo bene.
il problema me lo crea sui pin 12
ovvero ad ogni impulso si accende sempre il led 12
i pin 11, 12 e 13 non funzionano qualcuno puo spiegarmiil motivo???

#include <String.h>
#include <SPI.h>
#include <Ethernet.h>


//--------------------------Parametri Ethernet ----------------------------------------
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 123);

EthernetServer server(3787);

String readString;
//---------------------------Selezionare i pin----------------------
int outPin2 = 2; // pin attuatore 1
boolean LEDON2 = false; // flag status attuatore
//-----------------------------Selezionare i pin--------------------
int outPin3 = 3; // pin attuatore 2
boolean LEDON3 = false; // flag status attuatore
//-----------------------------Selezionare i pin--------------------
int outPin5 = 5; // pin attuatore 5
boolean LEDON5 = false; // flag status attuatore
//------------------------------Selezionare i pin-------------------
int outPin6 = 6; // pin attuatore 6
boolean LEDON6 = false; // flag status attuatore
//-------------------------------Selezionare i pin-------------------
int outPin7 = 7; // pin attuatore 7
boolean LEDON7 = false; // flag status attuatore
//-------------------------------Selezionare i pin-------------------
int outPin8 = 8; // pin attuatore 8
boolean LEDON8 = false; // flag status attuato
//------------------------------Selezionare i pin--------------------
int outPin9 = 9; // pin attuatore 9
boolean LEDON9 = false; // flag status attuato
//-------------------------------Selezionare i pin--------------------
int outPin11 = 11; // pin attuatore 11
boolean LEDON11 = false; // flag status attuato
//------------------------------Selezionare i pin---------------------
int outPin12 = 12; // pin attuatore 12
boolean LEDON12 = false; // flag status attuato
//------------------------------Selezionare i pin---------------------
int outPin13 = 13; // pin attuatore 13
boolean LEDON13 = false; // flag status attuato
//------------------------------Selezionare i pin---------------------



void setup(){
Ethernet.begin(mac, ip);
//---------------------------Uscita Pin Digitali----------------------------------------
pinMode (outPin2, OUTPUT); // pin del led
pinMode (outPin3, OUTPUT); // pin del led
pinMode (outPin5, OUTPUT); // pin del led
pinMode (outPin6, OUTPUT); // pin del led
pinMode (outPin7, OUTPUT); // pin del led
pinMode (outPin8, OUTPUT); // pin del led
pinMode (outPin9, OUTPUT); // pin del led
pinMode (outPin11, OUTPUT);// pin del led
pinMode (outPin12, OUTPUT);// pin del led
pinMode (outPin13, OUTPUT);// pin del led






Serial.begin(9600);
}

void loop(){
//-------------------TEMPO IMPULSO pin 2------------------------------------------  

//digitalWrite(outPin2,HIGH);// accende ledPin
//delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
//digitalWrite(outPin2,LOW);//spegne ledPin
//delay(100);//attende mezzo secondo
//-------------------TEMPO IMPULSO pin 3------------------------------------------  

//digitalWrite(outPin3,HIGH);// accende ledPin
//delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
//digitalWrite(outPin3,LOW);//spegne ledPin
//delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 5------------------------------------------  

//digitalWrite(outPin5,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin5,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 6------------------------------------------  

//digitalWrite(outPin6,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin6,LOW);//spegne ledPin
delay(100);//attende mezzo secondo


//-------------------TEMPO IMPULSO pin 7------------------------------------------  

//digitalWrite(outPin7,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin7,LOW);//spegne ledPin
delay(100);//attende mezzo secondo
//-------------------TEMPO IMPULSO pin 8------------------------------------------  

//digitalWrite(outPin8,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin8,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 9------------------------------------------  

//digitalWrite(outPin9,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin9,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 11------------------------------------------  

//digitalWrite(outPin11,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin11,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 12------------------------------------------  

//digitalWrite(outPin12,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin12,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------TEMPO IMPULSO pin 13------------------------------------------  

//digitalWrite(outPin13,HIGH);// accende ledPin
delay(100);//attende mezzo secondo (500 ms)RESTA ACCESO X
digitalWrite(outPin13,LOW);//spegne ledPin
delay(100);//attende mezzo secondo

//-------------------------FINE----------------------------------------------------------

continua…

Correggi il tuo primo post inserendo lo sketch nel simbolo </> che trovi in alto a sinistra, dopo aver premuto Preview nella risposta.

Ciao,
P.

ciao...in primis, per cortesia, fai quanto chiesto da pgiagno...dopo di che...

il problema me lo crea sui pin 12

...quanti pin 12 (dodici) hai?... :smiley: ...penso intendessi SUL pin 12.

ovvero ad ogni impulso si accende sempre il led 12

per impulso intendi ad ogni digitalWrite()!?
se è così attento che, tranne per i PIN 2 e 3, che, dopo essere stati inizializzati, non fanno nulla, tutti gli altri li metti a LOW...

>pep123456: come ti è stato già segnalato, ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Guglielmo

i pin 11, 12 e 13 non funzionano qualcuno puo spiegarmiil motivo????????

Presumo che hai un Arduino UNO.

I pin 11, 12 e 13 e 10 e/o 4 sono l' interfaccia SPI che stai usando per la scheda Ethernet.
Puoi usare le entrate analogiche come pin digitali D14 a D19.

Impara cosa sono Array e di usarli. Con questi riduci il tuo Sketch a poche righe.

Ciao Uwe

Sento aria di scuoiamento... :smiley: (sadico)

scusate non ho resistito!

ORSO2001:
Sento aria di squoiamento... :smiley: (sadico)

scusate non ho resistito!

mi sto attorcigliando io e il forum , anche x modificare un post ci vogliono 5 minuti

…scusa non ho resistito…il codice va inserito tra i tago code (pulsante </>) sopra le faccine.

in pratica lo premi e nella finestra di “dialogo” comparirà: CODE e CODE…inserisci il tuo sketch tra i due.

altro suggerimenti non quotare un intero post ma solo le parti che vuoi commentare

EDIT:vediamo se sta volta ho scritto giusto

uwefed:
Presumo che hai un Arduino UNO.

I pin 11, 12 e 13 e 10 e/o 4 sono l' interfaccia SPI che stai usando per la scheda Ethernet.
Puoi usare le entrate analogiche come pin digitali D14 a D19.

Impara cosa sono Array e di usarli. Con questi riduci il tuo Sketch a poche righe.

Ciao Uwe

hai ragione uwe me n ero proprio dimenticato di sta cosa scusatemi

scusatemi ancora
volevo chiedere una cosa , ho trosformato pin analogici in digitali e fin qui tutto bene,
ora lo sketch è diventato molto grande dandomi questo messaggio

Lo sketch usa 16548 byte (51%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
Le variabili globali usano 1946 byte (95%) di memoria dinamica, lasciando altri 102 byte liberi per le variabili locali. Il massimo è 2048 byte.
Poca memoria disponibile, potrebbero presentarsi problemi di stabilità

e automaticamente non apre piu la pagina web
posso ovviare il problema?

la libreria String mette molto sotto torchio la scheda.... il mio consiglio è NON usare String :slight_smile:

MD

qui non capisco piu niente ufff
da dv parto?

Le variabili globali usano 1946 byte (95%) di memoria dinamica, lasciando altri 102 byte liberi per le variabili locali. Il massimo è 2048 byte.

Non forse ma sicuramente non funziona. La RAM serve non solo alle variabili ma serve anche per altre informazioni che vengono memorizzate durante il funzionamento. Per queste informazioni non bastano 102 byte.

Dacci lo sketch attuale. Vediamo se si puó risparmiare RAM.

Ciao Uwe

uwefed:
Non forse ma sicuramente non funziona. La RAM serve non solo alle variabili ma serve anche per altre informazioni che vengono memorizzate durante il funzionamento. Per queste informazioni non bastano 102 byte.

Dacci lo sketch attuale. Vediamo se si puó risparmiare RAM.

Ciao Uwe

innanzitutto vi ringrazio x la disponibilità,
vorrei sapere come allegare lo sketch visto che non mi fa aggiungere piu di 9000 caratteri, posso allegare lil files in altro modo oppure farlo in piu step??

Mettilo come allegato ... REGOLAMENTO, punto 8.

Guglielmo

Grazie 1000
scusatemi x com è impostato lo sketch ma cosi imparo meglio

test_led_con_pin_analogici.ino (23.9 KB)

Per primo usa dei array al posto delle variabili per esempio outPin2.
Per secondo usa la macro F() in tuutti i print di testo
esempio al posto di:
Serial.print("ON pin ");
scrivi
Serial.print(F("ON pin "));
stessa cosa con i
Serial.println, client.print e client.println

Ciao Uwe

uwefed:
Per primo usa dei array al posto delle variabili per esempio outPin2.
Per secondo usa la macro F() in tuutti i print di testo
esempio al posto di:
Serial.print("ON pin ");
scrivi
Serial.print(F("ON pin "));
stessa cosa con i
Serial.println, client.print e client.println

Ciao Uwe

uwe mi fai un esempio di array Grazie
ps ho effettuato le modifiche da te spiegatomi ma lo sketch non funge piu

test.ino.ino (27.7 KB)

ciao pep123456,

il suggerimento di Uwe lo devi applicare solo alle “stringhe” statiche…cioè

Serial.print(F("ciao"));  // OK
Serial.print(F(digitalRead(pinx));  // NON OK

perchè anche “ciao” occupa memoria e con o senza l’uso di “F()” cambi dove salvi questa.

un esempio di array (che è un insieme di elementi omogenei) potrebbe essere:

byte pins[] = {2,3,4,5,6}; //  creo un array di 5 elementi
for(byte i=0;i<5;i++){
pinMode(pins[i],INPUT);  //  con questo ciclo for imposto come INPUT i pin da 2 a 6
}

come hai visto ho creato un array di 5 elementi che vengono contati da “0” (prima posizione nell’array) a “4” (quinta ed ultima posizione nell’array).
quindi pins[0] si riferirà al pin “2”; pins[1] al pin 3 etc.
per omogenei intendo che sono dello stesso tipo (byte, int, char etc) non contigui…all’interno dell’array[5] potrei avere anche 3,5,8,12,17

ORSO2001:
ciao pep123456,

il suggerimento di Uwe lo devi applicare solo alle “stringhe” statiche…cioè

Serial.print(F("ciao"));  // OK

Serial.print(F(digitalRead(pinx));  // NON OK



perchè anche "ciao" occupa memoria e con o senza l'uso di "F()" cambi dove salvi questa.

un esempio di array (che è un insieme di elementi omogenei) potrebbe essere:


byte pins = {2,3,4,5,6}; //  creo un array di 5 elementi
for(byte i=0;i<5;i++){
pinMode(pins[i],INPUT);  //  con questo ciclo for imposto come INPUT i pin da 2 a 6
}




come hai visto ho creato un array di 5 elementi che vengono contati da "0" (prima posizione nell'array) a "4" (quinta ed ultima posizione nell'array).
quindi pins[0] si riferirà al pin "2"; pins[1] al pin 3 etc.
per omogenei intendo che sono dello stesso tipo (byte, int, char etc) non contigui...all'interno dell'array[5] potrei avere anche 3,5,8,12,17

CASPITA solo con la macro F sono sceso dal 94% al 39 wow