Sainsmart kit 4WD problema codice. (Da presentare domani all'Openday scolastico)

Allora, salve a tutti!
Sperando di aver collegato tutte le cose come si deve con la macchina sono arrivato ad inserire il codice su Arduino IDE ( quello dato in dotazione da Sainsmart ma me lo restituisce con il seguente errore:

sketch_oct12d:8: error: expected constructor, destructor, or type conversion before '(' token
sketch_oct12d:9: error: expected unqualified-id before 'for'
sketch_oct12d:9: error: expected constructor, destructor, or type conversion before '<' token
sketch_oct12d:9: error: expected constructor, destructor, or type conversion before '++' token
sketch_oct12d:12: error: expected declaration before '}' token

Il codice in questione è:

const int EchoPin = 2; // Ultrasonic signal input const int TrigPin = 3; // Ultrasonic signal output


const int leftmotorpin1 = 8; //signal output of DC geared motor const int leftmotorpin2 = 9;
const int rightmotorpin1 = 6;
const int rightmotorpin2 = 7;
int currDist = 0;       // distance void setup() {
pinMode(EchoPin, INPUT);
for (int pinindex = 3; pinindex < 8; pinindex++) {
pinMode(pinindex, OUTPUT); // set pins 3 to 10 as outputs
}
}


void loop() {
currDist = MeasuringDistance(); //measure front distance


if(currDist >20) {
nodanger(); 
}
else if(currDist <10){ backup(); randTrun();
}
else {
//whichway();
randTrun();
}
}


//measure distance, unit:cm long MeasuringDistance() { long duration;
//pinMode(TrigPin, OUTPUT); digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW);


//pinMode(EchoPin, INPUT);
duration = pulseIn(EchoPin, HIGH);


return duration / 29 / 2;
}


// forward
void nodanger() { digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, LOW); digitalWrite(rightmotorpin1, HIGH); digitalWrite(rightmotorpin2, LOW); delay(1000);
return;
}


//backward
void backup() { digitalWrite(leftmotorpin1, LOW); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, LOW); digitalWrite(rightmotorpin2, HIGH); delay(500); 
}


void totalhalt() { digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, HIGH); digitalWrite(rightmotorpin2, HIGH); return;
delay(500);
}


//turn left
void body_lturn() { digitalWrite(leftmotorpin1, LOW); digitalWrite(leftmotorpin2, HIGH); digitalWrite(rightmotorpin1, HIGH); digitalWrite(rightmotorpin2, LOW); delay(500);
totalhalt();
}


//turn right
void body_rturn() { digitalWrite(leftmotorpin1, HIGH); digitalWrite(leftmotorpin2, LOW); digitalWrite(rightmotorpin1, LOW); digitalWrite(rightmotorpin2, HIGH); delay(500);
totalhalt();
}


void randTrun(){
long randNumber; randomSeed(analogRead(0)); randNumber = random(0, 10); if(randNumber > 5) {
body_rturn();
}
else
{
body_lturn();
}
}

Vi prego è un progetto straimportantissimo per domani a scuola, sono disponibile a farci la notte

void setup() {

mandalo a capo, è commentato

Ciao, frazie per la risposta e scusa se ti disturbo ancora.
ho mandato a capo il void setup ma mo dice che Measuring distance non è srato dichiarato nel suo scopo
Ti chiedo per favore se è possibile ancora una volta il tuo aiuto o se c'è da instaklare qualche libreria.
un copy paste non c'è? :*

Ti sta dicendo che manca la funzione MeasuringDistance().
Ma chi te l'ha dato questo codice, scusa? Dagli errori pare ne manchi un pezzo.

Sembra che c'è, è solo commentata

//measure distance, unit:cm long MeasuringDistance() { long duration;
//pinMode(TrigPin, OUTPUT); digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW);

resta il fatto che il codice è scritto malissimo e chi ha posto il post non ha le minime basi di programmazione neanche a livello sintattico per correggere errori così semplici da sistemare.

Una nottata non può fargli che bene per ricordarsi che non bisogna copiare il codice degli altri ]:smiley:

Non ho quasi per nulla il concetto di programmazione, ma entrando in questo mondo nuovo andando al Makerfaire ho acquistato il kit ec'era in dotqzione questo codice.
Ho corretto l'errore measuring distance e ne pone un altro
Expected constructor, destrictor, or type conversion before '=' token
e mi seleziona
duration= pulseIn (Echopin, HIGH)
Vorrei solo vedere la mia bella macchinina camminare?
mi potreste aiutare? Sigh

Non si tratta del "concetto" ma delle "nozioni" di programmazione.
Non puoi pensare di fare cose del genere senza sapere nulla di programmazione.

Se il codice era contenuto in qualche cosa, hai sbagliato nel copia-e-incolla.
Comunque così è corretto, almeno sintatticamente (compila senza errori):

const int EchoPin = 2; // Ultrasonic signal input
const int TrigPin = 3; // Ultrasonic signal output


const int leftmotorpin1 = 8; //signal output of DC geared motor
const int leftmotorpin2 = 9;
const int rightmotorpin1 = 6;
const int rightmotorpin2 = 7;
int currDist = 0;       // distance

void setup() {
    pinMode(EchoPin, INPUT);
    for (int pinindex = 3; pinindex < 8; pinindex++) {
        pinMode(pinindex, OUTPUT); // set pins 3 to 10 as outputs
    }
}


void loop() {
    currDist = MeasuringDistance(); //measure front distance


        if(currDist >20) {
        nodanger(); 
    }
    else if(currDist <10){ 
        backup(); 
        randTrun();
    }
    else {
        //whichway();
        randTrun();
    }
}


//measure distance, unit:cm
long MeasuringDistance() { 
    long duration;
    pinMode(TrigPin, OUTPUT);
    digitalWrite(TrigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);


    pinMode(EchoPin, INPUT);
    duration = pulseIn(EchoPin, HIGH);


    return duration / 29 / 2;
}


// forward
void nodanger() { 
    digitalWrite(leftmotorpin1, HIGH); 
    digitalWrite(leftmotorpin2, LOW); 
    digitalWrite(rightmotorpin1, HIGH); 
    digitalWrite(rightmotorpin2, LOW); 
    delay(1000);
    return;
}


//backward
void backup() { 
    digitalWrite(leftmotorpin1, LOW); 
    digitalWrite(leftmotorpin2, HIGH); 
    digitalWrite(rightmotorpin1, LOW); 
    digitalWrite(rightmotorpin2, HIGH); 
    delay(500); 
}


void totalhalt() { 
    digitalWrite(leftmotorpin1, HIGH); 
    digitalWrite(leftmotorpin2, HIGH); 
    digitalWrite(rightmotorpin1, HIGH); 
    digitalWrite(rightmotorpin2, HIGH); 
    return;
    delay(500);
}


//turn left
void body_lturn() { 
    digitalWrite(leftmotorpin1, LOW); 
    digitalWrite(leftmotorpin2, HIGH); 
    digitalWrite(rightmotorpin1, HIGH); 
    digitalWrite(rightmotorpin2, LOW); 
    delay(500);
    totalhalt();
}


//turn right
void body_rturn() { 
    digitalWrite(leftmotorpin1, HIGH); 
    digitalWrite(leftmotorpin2, LOW); 
    digitalWrite(rightmotorpin1, LOW); 
    digitalWrite(rightmotorpin2, HIGH); 
    delay(500);
    totalhalt();
}


void randTrun(){
    long randNumber; 
    randomSeed(analogRead(0)); 
    randNumber = random(0, 10); 
    if(randNumber > 5) {
        body_rturn();
    }
    else
    {
        body_lturn();
    }
}

Grazie mille per il codice ! :slight_smile:
Ma la macchina non si muove, avrò sbagliato con i collegamenti meglio che vado a studiare .
Non fa per me!
Grazie

Non so neanche se il codice è a posto a livello di logica, io l'ho solo sistemato a livello di sintassi: potrebbe darsi che non si muove perché è errato. Però se l'hai copia-e-incollato male ci sta anche che ci sia qualche errore sparso.
Ovviamente devi anche ricontrollare i collegamenti... :stuck_out_tongue:

Provvederò, grazie mille! :stuck_out_tongue:

supermumu:
Grazie mille per il codice ! :slight_smile:
Ma la macchina non si muove, avrò sbagliato con i collegamenti meglio che vado a studiare .
Non fa per me!
Grazie

Uhh, che brutto !!! Ti abbatti al primo problema ?? Dai, su. Logicamente bisogna studiare un pochettino. Ma non ti abbattere. :slight_smile: