Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Far eseguire due funzioni indipendenti

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto Utentexyz, Foto UtenteWALTERmwp

0
voti

[1] Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteMacelettronic » 10 feb 2020, 20:01

Ciao ragazzi, ho iniziato da poco a programmare con Arduino, vorrei capire, prima di acquistare materiale, se mi piace o meno.
Sto attualmente usando tinkercard come simulatore per vedere se riesco a capire il linguaggio di programmazione.

Dopo aver capito come far accendere un Led, volevo capire come poter far accendere un Led ed in contemporanea farne lampeggiare un altro, per capire come far eseguire due funzioni indipendenti in contemporanea.
ma ricevo un errore, ho cercato su google, ma forse sbaglio i termini di ricerca e non trovo nulla che mi possa aiutare, ho solo capito che le funzioni void Setup e void loop possono essere solamente una per programma, giusto?
Quindi come potrei risolvere?
Vi posto il mio programma, il simulatore mi da errore nel secondo void loop:

Codice: Seleziona tutto
//prova led indipendenti

#define LED_1 11
#define LED_2 10

void setup() {
    pinMode(LED_1, OUTPUT);
    pinMode(LED_2, OUTPUT);
}

void loop() {
    digitalWrite(LED_1, HIGH);
}

voidloop() {
    digitalWrite(LED_2, LOW);
    delay(500);
    digitalWrite(LED_2;HIGH);
    delay(500);
}


Grazie per l'aiuto
Ultima modifica di Foto Utentewruggeri il 11 feb 2020, 12:12, modificato 1 volta in totale.
Motivazione: Aggiunti i tag per il codice (come se a qualcuno la cosa interessasse più...)
Avatar utente
Foto UtenteMacelettronic
55 2 6
Frequentatore
Frequentatore
 
Messaggi: 212
Iscritto il: 1 feb 2012, 11:08

2
voti

[2] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteIlGuru » 10 feb 2020, 20:17

Cerca su Google:
Tutorial programmazione C
Quando hai imparato a programmare in C torna su Arduino e vedrai che sarà più semplice.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.594 2 10 13
Master EY
Master EY
 
Messaggi: 1639
Iscritto il: 31 lug 2015, 23:32

0
voti

[3] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteWALTERmwp » 10 feb 2020, 21:26

Beh, quando hai imparato ad accendere un led, prima di fare altro dovresti imparare a spegnerlo.
Guarda che non è una battuta.
@IlGuru è stato un po' draconiano ma c'è del vero, se non conosci un linguaggio o non hai un po' di confidenza con la programmazione anche le cose in assoluto più semplici sembrano complicate.

Concettualmente è errato quel pezzo di codice(ti invito ad usare il tag [-Code-] per riportare le linee di programma nel post, risulta più leggibile).

Questo
Codice: Seleziona tutto
void loop() {
digitalWrite(LED_1, HIGH);
}
significa che il microcontrollore, dopo avere eseguito le istruzioni che precedono, continua, all'infinito, ad eseguire l'istruzione "digitalWrite(LED_1, HIGH);".
Tuto quello che hai scritto dopo è come se non esistesse, quindi inutile riportarlo.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,8k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 7098
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[4] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto Utentelucaking » 11 feb 2020, 9:14

Premesso che concordo con cio detto sopra, anch' io ho cominciato a giocare con Arduino, ma presto mi sono accorto che serviva conoscere un po' di C e C++ per capire cosa si stesse facendo con Arduino.
Detto cio:
Macelettronic ha scritto:....accendere un Led ed in contemporanea farne lampeggiare un altro, per capire come far eseguire due funzioni indipendenti in contemporanea.

Che io sappia un micro con un solo processore non può fare operazioni multithread.

Macelettronic ha scritto:Vi posto il mio programma, il simulatore mi da errore nel secondo void loop:

Oltre a cio che tia ha giustamente fatto notare Foto UtenteWALTERmwp, aggiungo che la funzione loop non è altro che una normale funzione che nel main di Arduino viene chiamata ciclicamente all'infinito:
Codice: Seleziona tutto
for (;;) {
    loop ();   
}

motivo per cui vale cio che ti è stato detto.
Inoltre tu stai definendo due volte con lo stesso nome una funzione, e questo al compilatore non piacerebbe, nemmeno se la funzione avesse un altro nome.
Avatar utente
Foto Utentelucaking
1.118 3 5 8
Expert
Expert
 
Messaggi: 1017
Iscritto il: 29 mag 2015, 14:28

3
voti

[5] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto Utentewruggeri » 11 feb 2020, 12:09

Premettendo che io ammazzerei sul posto tutti quelli che vogliono usare Arduino senza saper programmare;

Premettendo che io torturerei personalmente tutti quelli che vogliono fare programmazione concorrente senza avere la minima idea di cosa voglia dire;

Premettendo che io chiuderei seduta stante la sezione "Arduino" di questo forum perché fornisce spazio (anche) alle peggiori schifezze (di cui il mondo arduinistico è promotore nella sua totalità);

Premettendo tutto questo ed evitando di premettere tanto altro, ti rispondo: quel che vuoi fare non si può fare come lo hai in mente, e se avessi la benché minima idea di ciò di cui stai parlando non avresti neanche bisogno di iniziare a formulare il pensiero.
Ora, se tu sapessi programmare sapresti che c'è un modo semplicissimo per ottenere quel che chiedi... ma tu sai programmare?
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.474 2 8 13
Master EY
Master EY
 
Messaggi: 1127
Iscritto il: 25 nov 2016, 18:46

0
voti

[6] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteWALTERmwp » 11 feb 2020, 12:15

questo
lucaking ha scritto:(...) Inoltre tu stai definendo due volte con lo stesso nome una funzione, e questo al compilatore non piacerebbe, nemmeno se la funzione avesse un altro nome.
è corretto ?

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,8k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 7098
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

1
voti

[7] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteIlGuru » 11 feb 2020, 12:20

Credo intenda dire anche dichiarando ( più volte ) qualunque altro nome di funzione, non limitato solo a loop()
Ma queste sono nozioni che chiunque abbia seguito mezz'ora di un qualunque tutorial base su C conoscerebbe.
Può uno chiedere come si scrivono i sonetti se non conosce nemmeno la grammatica?
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.594 2 10 13
Master EY
Master EY
 
Messaggi: 1639
Iscritto il: 31 lug 2015, 23:32

0
voti

[8] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteWALTERmwp » 11 feb 2020, 12:31

Macelettronic ha scritto:(...) volevo capire come poter far accendere un Led ed in contemporanea farne lampeggiare un altro, per capire come far eseguire due funzioni indipendenti in contemporanea (...)
di solito, quella che è una esecuzione contemporanea lo è solo in apparenza.
La velocità con la quale vengono caricate le istruzioni è tale da far sembrare che le operazioni avvengano "insieme", tipico se vuoi pilotare due led ma con effetti differenti.
Invece non avvengono insieme, prima viene fatta una cosa, poi quella successiva e così via.
Poi dipende da come è scolpito il silicio, ma sono altri discorsi: se usi un normale microcontrollore, è così.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,8k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 7098
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

1
voti

[9] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto Utentewruggeri » 11 feb 2020, 12:53

IlGuru ha scritto:Può uno chiedere come si scrivono i sonetti se non conosce nemmeno la grammatica?


Può, se qualcuno lo legittima cercando pure di spiegargli come fare invece di mandarlo a studiare #-o
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.474 2 8 13
Master EY
Master EY
 
Messaggi: 1127
Iscritto il: 25 nov 2016, 18:46

0
voti

[10] Re: Far eseguire due funzioni indipendenti

Messaggioda Foto UtenteMacelettronic » 11 feb 2020, 12:57

Ok grazie.
Cercherò di usare i consigli utili alcuni di voi mi hanno dato.
Avatar utente
Foto UtenteMacelettronic
55 2 6
Frequentatore
Frequentatore
 
Messaggi: 212
Iscritto il: 1 feb 2012, 11:08

Prossimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite