Cer ajutor. Nou pe forum si in arduino

Buna ziua tuturor!
Sunt Andrei si sunt incepator in programare si nou pe forum.
Am inceput de nu demult sa studiez Arduino, si intalnesc foarte multe neclaritati asupra diferitor teme.
As fi bucuros daca cineva ar fi dispus sa ma ajute.

Am urmamtorul exercitiu de rezolvat:

Creați un nou program Arduino. Definiți pinii 10 și 11 ca ieșire și conectați-le la semnalele motorului A1 și A2.(pentru A1=HIGH inainte, pentru A2=HIGH inapoi)
Adăugați o nouă funcție „setMotorSpeed” la programul dvs. Acest lucru este menit ca parametru de a
obține o valoare de adevăr (booleană) „forward”. Apoi implementați funcția următoare : Dacă functia „forward” are valoarea adevărată, motorul ar trebui să se rotească înainte, de altfel
înapoi. Pentru a face acest lucru, generați semnale de control adecvate pentru motor.

Am un Arduino Pro, cu cinci butoane de intrare. De pe fiecare buton se poate citi valoare lui analoga (este diferita pentru fiecare buton) si converti de la 0 la 1023.

void loop() {

boolean Vw=analogValue>800&analogValue<900;
boolean Rw=analogValue>600&analogValue<700;

analogValue = analogRead(A0);

if(Vw){digitalWrite(10, 1, digitalWrite(11, 0);
if(Rw){digitalWrite(11, 1, digitalWrite(10, 0,);

 }

Am realizat aceasta si functioneaza, dar cum ast putea sa realizez ceva ceea ce seamana cu

setMotorSpeed(boolean forward, int)
{
digitalWrite(PIN, forward);
digitalWrite(DIN, !forward);

 }

adica ca noua functie creata sa fie accesata in loop.

Ideea e ca urmatorul exercitiu va accesa aceasta functie de de setare a directiei, si va trebui la fiecare apasare a butonului sa pot mari viteza de rotatie, iar setarea directiei sa fie independenta de setarea vitezei.

Va multumesc anticipat!

Mie mi se pare că nici loop-ul nu e corect implementat. Tu prima dată evaluezi variabila “analogValue” şi abia apoi o citeşti. N-are niciun sens. E ca şi cum prima data ţi-ai da cu părerea şi abia apoi te-ai documenta :slight_smile:

Ca să putem să te ajutăm, dă mai multe detalii. De exemplu ce face funcţia digitalWrite? Cred că ai şi erori de sintaxă pe acolo, acoladele de la “if” nu sunt inchise.

https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/

Aha, am înţeles, face parte din API-ul Arduino. Well, în cazul ăsta iniţiatorul topicului probabil vrea ceva de genul ăsta

void setMotorDirection(bool forward)
{
    digitalWrite(10, forward);
    digitalWrite(11, !forward);
}


void loop()
{
    int analogValue = analogRead(A0);

    if(analogValue > 600 && analogValue < 700)
        setMotorDirection(true);
    else if(analogValue > 800 && analogValue < 900)
        setMotorDirection(false);
}