schetsfout die ik niet kan oplossen

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 10
Geregistreerd: 12 Nov 2016, 15:27

schetsfout die ik niet kan oplossen

Berichtdoor pierrepasmans » 12 Jan 2017, 15:52

ik ben beginnend arduino freak en bezig met een schakeling waarbij pin 13 pas actief wordt, als eerst pin 3 t/m 12 geactiveerd zijn.
dat gebeurt via een IR reciever, die ik heb getest en die werkt.
Ik wil verkorte schrijfwijzen hanteren die ik uit een ander programma heb overgenomen. Daarin wordt de term -- thisPin-- gebruikt.
de programmacontrole accepteert dit wel in de setup, maar geeft in de loop steeds de melding - thisPin does not name a type.

Ziet iemand wat ik fout doe??

//deze schets met 1 IR ontvanger en een led is een oefening
//voor grotere toepassingen.Doel is om met de AND functie && veel voorwaarden
//te koppelen


//de bibliotheek voor de IR afstandsbediening ophalen.
#include <IRremote.h> //omvat de IRremote bibliotheek

//de waarden van IR zender die herkend moeten worden, bekend maken.
unsigned long Value1 = 0x10;
unsigned long Value2 = 0x810;
unsigned long Value3 = 0x410;
unsigned long Value4 = 0xC10;
unsigned long Value5 = 0x210;
unsigned long Value6 = 0xA10;
unsigned long Value7 = 0x610;
unsigned long Value8 = 0xE10;
unsigned long Value9 = 0x110;
unsigned long Value0 = 0x910;

//de plaats waar het IR signaal van de irreciever binnenkomt aangeven
//en het signaal laten decoderen.

int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;


// verkorte schrijfwijze

const int lowestPin = 3;
const int highestPin = 13;


void setup()
{
// de setup codes invoeren, beginnend met de beeldscherm uitleesfrequentie.
Serial.begin (9600);
irrecv.enableIRIn(); //start de IR ontvanger


// verkorte schrijfwijze om alle pins tegelijk op output te zetten
for (int thisPin = lowestPin; thisPin <= highestPin; thisPin ++)
{
pinMode(thisPin, OUTPUT);
}
}

void loop()
{
// decoderen van IR invoer en weergeven op scherm, dan openstaan voor volgend signaal.
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
//ontvang de volgende waarde
irrecv.resume();
}
}

//reacties op de juiste waarden van IR signaal weergeven.

for (int thisPin = lowestPin; thisPin <= highestPin; thisPin ++)
{

//hier volgt de AND functie om alle voorwaarden te koppelen.
if (digitalRead(3) == HIGH && digitalRead(4) == HIGH && digitalRead(5) == HIGH && digitalRead(6) == HIGH && digitalRead(7) == HIGH && digitalRead(8) == HIGH
&& digitalRead(9) == HIGH && digitalRead(10) == HIGH && digitalRead(11) == HIGH && digitalRead(12) == HIGH)
{

digitalWrite(highestPin, HIGH); // Pin13 gaat hier als highestPin door het leven.
delay (500);
digitalWrite (highestPin, LOW);
delay (500);


} //

} //

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: schetsfout die ik niet kan oplossen

Berichtdoor Koepel » 12 Jan 2017, 16:26

Hallo,
Het gaat om inspringen (indent) en gebruik van accoladen (curly braces).

In het menu zit "Hulpmiddelen / Automatische opmaak", of je drukt op Ctrl+T.

Dan kijk je eens wat de functies zijn, waar de code zit, enzovoorts.
Het blijkt dat je de loop() afsluit, en daarna nog wat code aan de compiler probeert te voeren, daar begrijpt de compiler niets van en hij meld: "ik snap niks van thisPin op deze regel", oftewel: "error: 'thisPin' does not name a type".

Bij een onbelangrijke variabele in een for-loop, mag je die trouwens ook gewoon "i" noemen, dat is net zo gemakkelijk als "thisPin".

Bij de voorkeuren kun je de uitgebreide uitvoer voor de compiler aanzetten. De eerste foutmelding is de belangrijkste, en de eerste foutmelding is: "error: expected unqualified-id before 'for'". Dus nog voordat de compiler "thisPin" ziet staan, snapt de compiler het "for"-statement al niet op die plaats.

Heb je "regelnummers weergeven" aangezet bij de voorkeuren ? Dat is vaak handig.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: schetsfout die ik niet kan oplossen

Berichtdoor shooter » 12 Jan 2017, 21:03

onder irrecv een } weghalen
wat doet die for loop eronder?
en je gebruikt alleen maar 13 als output de rest als input.
en dan moet eronderaan dan weer een } bij
of je moet er een functie van maken.
en uiteraard koepel heeft ook gelijk.
paul deelen
shooter@home.nl

Berichten: 10
Geregistreerd: 12 Nov 2016, 15:27

Re: schetsfout die ik niet kan oplossen

Berichtdoor pierrepasmans » 13 Jan 2017, 10:43

bedankt voor de hhopvolle reacties mensen. Ik ga ermee aan de slag. Ik heb nog veel te leren, maar het wel heel leuk.
Pierre

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten