Go Down

Topic: Mi serve un consiglio per una programmazione migliore (Read 1 time) previous topic - next topic

falconblu

Salve, grazie per avermi accettato nel forum.
Sono un elettronico che sta cercando di entrare nella programmazione di Arduino, tempo fa programmavo un Po in quikbasic.
Il mio piccolo problema e che mi mancano un Po di cose in questo linguaggio, tipo Subroutine, cicli FOR next, ecc, sicuramente in Arduino ci sarà un modo per farli, ma non gli ho ancora trovato.
Sto scrivendo un programma che serve a visualizzare un dato messaggio su un display se cambia il livello logico a un determinato ingresso del Microcontrollore ATmega2560.
Il programma funziona ma per fare scrivere il messaggio sul display e fare in modo che cambi ciclicamente, devi scrivere più volte i messaggi gestendoli con dei delay(xxxx) 
 Esiste un modo più coretto di scrivere questa rutina, decidendo quante volte deve ripeterla e la temporizzazione da usare?
Allego una delle rutine che sto usando
Grazie

Code: [Select]

if (digitalRead(PULSANTE1) == HIGH) // Pulsante 1 premuto
  {
digitalWrite(USCITA1, HIGH);    // Accensione led 2
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000);
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000);
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000);
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000);
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000);
print2display(" PORTA  "); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay (1000); 
print2display("INGRESSO"); // linea aggiunta da giorgio per mettere una frase  30-4-2018
delay(1000); 
 }
  else
  {
  digitalWrite(USCITA1, LOW);
  }
  delay(100);

UKHeliBob

The Arduino is programmed in C++ and of course you can write and call subroutines (actually called functions) and use for loops
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

gpb01

>falconblu: Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

... poi, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... 

... infine, in conformità al suddetto regolamento, punto 13, il cross-posting è proibito (anche tra lingue diverse) per cui, il tuo post duplicato qui nella sezione Italiana è stato cancellato.

Grazie.

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano"dove puoi proseguire la discussione.

P.P.S.: Ti ricordo che, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Search is Your friend ... or I am Your enemy !

falconblu

#3
Feb 18, 2019, 12:21 am Last Edit: Feb 18, 2019, 12:22 am by falconblu
Salve gpb019, mi spiace se al mio primo post ho creato un Po di confusione, non era mia intenzione.
Se ho scritto nella sezione inglese invece di quella italiana, penso che sia stata colpa del traduttore automatico che ho sulle pagine web, a volte non mi rendo conto se è inglese o italiano.
 Mi spiace se non mi sono presentato, ma non sono alla ricerca di un lavoro e non pensavo di dare un curriculum  :) .

Poi se non mi vogliono rispondere, non fa niente, già alla prima risposta ho capito che aria tira, non mi sembrava di aver chiesto tanto, né tantomeno ho fatto richiesta di scrivermi un programma, ma era solo un'ottimizzazione sulla scrittura di un codice.
Devo essermi abituato male nella vita, a me se qualcuno mi si avvicina e mi chiede un aiuto su come disporre, o come ottimizzare un circuito elettronico, non gli chiedo né il curriculum, né tanto meno gli rispondo in modo complicato, ma cerco nel possibile di aiutarlo.
Nella mia vita vale sempre la regola numero uno di mio padre, se voi una casa fattela da solo, e se non ci arrivi tempo ci vuole.
Aspetto che questo post è letto e cancello inscrizione al forum.
Grazie e scusate il disturbo.

gpb01

Salve gpb019, mi spiace se al mio primo post ho creato un Po di confusione, non era mia intenzione ........
... se esiste un REGOLAMENTO non ti sembra normale e buona educazione rispettarlo ?

Poi fai come vuoi, cancellati pure ... però certi atteggiamenti non li capisco ... ::)
... oltretutto, se avessi letto il regolamento come richiesto, avresti anche scoperto perché si chiede la presentazione (punto 16.7).

Guglielmo
Search is Your friend ... or I am Your enemy !

torn24

Ciao! Non vedere tutto negativo perché non è cosi :) Questo forum è un ambiente dove si aiuta volentieri, è formato da tanti utenti che non sono specializzati ne in elettronica ne in informatica, è un forum aperto a tutti molto tollerante.
La presentazione non deve essere un curriculum, ma solo due righe per sapere quanto sei preparato di elettronica e in programmazione. E' utile per chi deve rispondere, ad esempio a me è capitato di voler rispondere a qualche domanda sulla programmazione, ma leggendo la presentazione ho scoperto che erano programmatori professionisti, ho evitato quindi di dare risposte da "principiante" a qualcuno che è laureato in informatica, perché certamente ne sapeva più di me :)

Stilita

La presentazione è una richiesta democratica, viene chiesta a tutti, anche se si iscrive
la direttrice del CERN, o il ragazzo del salumiere.
Inoltre quì ci sono tanti appassionati che spendono il loro tempo ad aiutare i principianti
e anch'io ne ho "approfittato" molto , e comunque nessuno ti vuole "stuzzicare".
Ti invito a rimanere e vedrai che tutto filerà liscio.
Ciao

Ps: anch'io ai primi tempi, in una discussione, o preso cappello, può succedere, siamo fallaci.
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

falconblu

#7
Feb 21, 2019, 10:30 pm Last Edit: Feb 21, 2019, 10:31 pm by falconblu
Buonasera, ho fatto una  breve presentazione, riprovo a porre il quesito al forum, sperando che non abbia fatto altri casini, perché sembra che sono partito male. :-)

gpb01

Ho ripulto il post da tutte le inutili chiacchiere che nulla avevano a che vedere con la discussione tecnica ...
... cortesemente rimaniamo in ambiente "tecnico", grazie.

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

... Il mio piccolo problema e che mi mancano un Po di cose in questo linguaggio, tipo Subroutine, cicli FOR next, ecc, sicuramente in Arduino ci sarà un modo per farli, ma non gli ho ancora trovato ...
Come puo ben immaginare quelle cose esistono anche in C/C++ ... solo che hanno nomi diversi.

Quelle che in altri linguaggi chiami "subroutines" in 'C' le chiami "funzioni", quindi, definisci una funzione, ci metti dentro il codice che deve eseguire e, dove ti serve, la richiami quante volte vuoi.

Per i cicli ne hai di vario tipo, incluso il for ed il  do while.

Detto questo, direi che per ripetere più volte una sequenza di istruzioni, un bel ciclo for potrebbe seere la soluzione ... ci vuoi provare ad applicarlo al tuo codice ?

Guglielmo
Search is Your friend ... or I am Your enemy !

steve-cr

Mah, io gli avevo modificato il suo programma con il ciclo FOR, e senza "inutili chiacchiere" ma non lo vedo più...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

gpb01

Mah, io gli avevo modificato il suo programma con il ciclo FOR, e senza "inutili chiacchiere" ma non lo vedo più...
Perché era in mezzo al blocco di "monnezza" e quindi è partito con essa ... comunque, è stato ben indicato al OP come in 'C' si fanno i vari cicli e non dubito che sarà in grado di sistemare il suo codice utilizzando il for :)

Guglielmo

Edit: ... sono riuscito a recuperare il post:

Per quanto riguarda il tuo programma, da quanto ho capito vuoi far lampeggiare la scritta ciclicamente.
quindi fai:

Code: [Select]

if (digitalRead(PULSANTE1) == HIGH) // Pulsante 1 premuto
  {
digitalWrite(USCITA1, HIGH);    // Accensione led 2

for (int i=0; i <= 10; i++){
   
print2display(" PORTA  ");
delay (1000);
print2display("INGRESSO");
delay(1000);
}

eccetera eccetera......

Search is Your friend ... or I am Your enemy !

AmericanDreamer

Mi attacco qui anch'io, perché credo di essere allo stesso livello di falconeblu
Ki mi spiega il programma, quello corretto?

gpb01

Ki mi spiega il programma, quello corretto?
Perfavore ... non sei né su una chat né su WhatsApp ... qui da noi chi si scrive chi e NON ki, grazie :D

Detto questo cosa non ti è chiaro? Il ciclo for? o che cosa ?

Guglielmo
Search is Your friend ... or I am Your enemy !

AmericanDreamer

Scusa, non mi trovo col for
Per la kappa, mi è scappata

Go Up