Probleem met delay

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

Re: Probleem met delay

Berichtdoor Koepel » 07 Aug 2016, 22:23

De compiler zegt wat er aan de hand is: "conflicting declaration 'int relais'".
Dit is het conflict:
Code: Alles selecteren
const int relais = 12;
...
int relais = HIGH;

De compiler ziet twee keer de variabele 'relais'.

Advertisement

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

Re: Probleem met delay

Berichtdoor Koepel » 09 Aug 2016, 21:43

Typische 'forum' vragen antwoord ik liever op het forum. Je kunt me een privebericht sturen om me ergens op attent te maken, bijvoorbeeld dat er op het forum een vraag over millis() of I2C is.

Ik gebruik Arduino.cc IDE 1.6.10 in linux 64-bit, en op dit moment heb een Arduino Uno op mijn tafel liggen om mee te testen.
Deze sketch http://www.arduinoforum.nl/viewtopic.php?p=14160#p14160 compileerde normaal, en het ledje knipperde.

Dit is een mini-test-sketch:
cpp code
// ----------------------------------------
// Mini test sketch.
// ----------------------------------------

const int ledPin = 13;

unsigned long previousMillis = 0UL;

void setup()
{
pinMode( ledPin, OUTPUT);
}


void loop()
{
unsigned long currentMillis = millis();

if( currentMillis - previousMillis >= 80UL) // blink very fast
{
previousMillis = currentMillis;

digitalWrite( ledPin, digitalRead( ledPin) == HIGH ? LOW : HIGH);
}
}


Getest met Arduino.cc 1.6.9 en 1.6.10 en Arduino.org 1.7.10.

Als iets niet werkt, kun je dan aangeven wat er niet werkt. Geeft de compiler een fout ? wat zijn dan de eerste foutmeldingen. Gaat het uploaden mis ? wat is dan de foutmelding. Of gaat alles goed en doet de sketch niet wat het zou moeten doen ? wat gebeurt er dan wel.

Berichten: 14
Geregistreerd: 02 Aug 2016, 22:09

Re: Probleem met delay

Berichtdoor bertjenl » 09 Aug 2016, 21:50

Sorry voor het prive bericht dat ten eerste

ik ben nu zelf aan het testen en de sketch nog steeds aan het proberen. De tijd was mijn fout.
Ondertussen de sketch aangepast en het werkt (eigenlijk stom van me) zie de LOW HIGH omgedraait bij de knop en de sensorState
// ----------------------------------------
// De gebruikte pinnen
//


const int relaisPin = 13;
const int knopPin =2;
const int sensorPin=5;


unsigned long previousMillis = 0UL;
const unsigned long interval = 1UL * 60UL * 1000UL; // 30 minutes (30 * 60 seconden * 1000 milli)
int relaisState; // globale variabele, onthoud de status van het relais. HIGH is uit, LOW is aan.

unsigned long previousMillisLed = 0UL;
int ledState;

void setup()
{
// ----------------------------------------
// Zet de pinnen
// ----------------------------------------

pinMode( relaisPin, OUTPUT); // dit wordt OUTPUT en LOW, is dat de bedoeling ?
pinMode( knopPin, INPUT);
pinMode(sensorPin,INPUT);


// ----------------------------------------
// Initialiseer de variabelen
// ----------------------------------------
relaisState = LOW; // het relais staat aan.
}


void loop()
{
// ----------------------------------------
// Eerste deel van de code in de loop(), haal alle informatie op
// ----------------------------------------

// een enkele 'currentMillis' voor de hele code in de loop()
unsigned long currentMillis = millis();
int knopState = digitalRead(knopPin);
int sensorState = digitalRead(sensorPin);




if ( relaisState == LOW)
{
// Het relais is aan, kijk of er 15 seconden verstreken zijn.
if ( currentMillis - previousMillis >= 15000UL) // 'UL' is 'unsigned long'
{
previousMillis = currentMillis; // onthoudt deze tijd om hierna de 30 minuten te kunnen gaan doen.
digitalWrite( relaisPin, HIGH); // relais uit
relaisState = HIGH; // high is uit;
}
}
else
{
// Het relais is uit, kijk of de 30 minuten wachttijd om zijn, of dat de knop of de sensor aktief wordt.
if ( currentMillis - previousMillis >= interval||knopState ==HIGH || sensorState == HIGH )
{
previousMillis = currentMillis; // onthoudt deze tijd om hierna de 15 seconden te kunnen doen.
digitalWrite( relaisPin, LOW); // relais aan
relaisState = LOW;
}
}

}
Laatst gewijzigd door bertjenl op 09 Aug 2016, 22:00, in totaal 1 keer gewijzigd.

Berichten: 14
Geregistreerd: 02 Aug 2016, 22:09

Re: Probleem met delay

Berichtdoor bertjenl » 09 Aug 2016, 21:56

zit er verschil in de pinnen van de UNO tussen het ene bord en het andere. Is dit bekent. Ik heb nu 2 arduino uno borden liggen op de ene gaat de ene sketch goed op de andere niet
Heb dit nu in dit topic omdat dit de oorzaak kan wezen dat de sketch niet werkte)

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

Re: Probleem met delay

Berichtdoor shooter » 09 Aug 2016, 22:05

Een UNO is een UNO, simpel, alleen de USB kan anders zijn, de echte hebben ftdi en de andere een ch341 chip (chinees, maar werkt ook wel hoor.
paul deelen
shooter@home.nl

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

Re: Probleem met delay

Berichtdoor Koepel » 09 Aug 2016, 22:29

Als je pin 13 als uitgang hebt, dan is alles gelijk.
Een CH340G chip heeft wel een extra driver nodig.

Wat is er mis met het foute Uno board ? Kun je de led op pin 13 aan en uit zetten ?
Soms raakt de bootloader corrupt, en helpt het om een nieuwe bootloader er op te zetten met een programmer. Als er echt iets stuk aan het board is, dan kun je het beter weg doen.

Een Arduino Uno R3 kost 2.52 euro op AliExpress.com, 6.36 (ik heb misschien niet goed gezocht) op Ebay.nl, 4.19 op DX.com.
Kies altijd de 'R3' versie voor een Uno of Mega. Dat is de nieuwste versie.
Ik heb eens een goedkope van onder de 5 euro gekocht om te zien of het werkte, en hij doet het nog steeds. Maar ik ga het niet buiten gebruiken in de vrieskou om de temperatuur te meten, dan kies ik voor een officieel board of een zelfgemaakte bare-bone Arduino.

Bij AliExpress.com, zoek op "uno r3" en stel de prijs in tussen de 2 en 3 euro, en click "free shipping" aan.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Probleem met delay

Berichtdoor nicoverduin » 10 Aug 2016, 07:49

Koepel schreef:Ik heb eens een goedkope van onder de 5 euro gekocht om te zien of het werkte, en hij doet het nog steeds. Maar ik ga het niet buiten gebruiken in de vrieskou om de temperatuur te meten, dan kies ik voor een officieel board of een zelfgemaakte bare-bone Arduino.

ligt er aan wat voor type 328P erop zit. Als het een type AU (Automotive) is, dan maakt het niet uit wie het bordje gemaakt heeft....Alleen de meesten weten dat niet.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Probleem met delay

Berichtdoor Koepel » 10 Aug 2016, 10:00

Het gaat om het kristal en de condensators. Stop maar eens een paar Arduino boardjes in de diepvries. De slechte kristallen stoppen onder de nul graden. Een ATmega chip die draait op de interne oscillator blijft het natuurlijk altijd doen. Misschien dat een resonator ook blijft werken.

Berichten: 14
Geregistreerd: 02 Aug 2016, 22:09

Re: Probleem met delay

Berichtdoor bertjenl » 10 Aug 2016, 12:01

Heren alle bedankt voor de reacties.
Dit project gaat me nu uitstekend lukken
En dan op naar de volgende
Dit is leuker dan ik had verwacht
Ook zit hier op het forum giga veel kennis
Heren bedankt
Bert

Berichten: 133
Geregistreerd: 10 Jan 2016, 16:39

Re: Probleem met delay

Berichtdoor Nightmystic » 11 Aug 2016, 23:33

De grootste moeilijkheid die ik had met delay vervangen door millis werd opgelost door toepassing van de info op deze pagina:
https://www.baldengineer.com/millis-tutorial.html

Ik hoop dat het voor de medeforum bezoekers net zo nuttig mag zijn als dat het voor mij geweest is.

VorigeVolgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: PatrickAbomi en 101 gasten