Nederlandse videoserie - Arduino voor beginners

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 8
Geregistreerd: 18 Feb 2018, 11:06
Woonplaats: Amsterdam

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor BasOnTech » 13 Mrt 2018, 21:15

Koepel schreef:Oeps :o je was vergeten om mij te vragen naar het gebruik van millis() te kijken :roll: Ik heb een issue gemaakt: https://github.com/BasOnTech/Arduino-Projects-NL/issues/1.

De laatste sketch zal best werken: https://github.com/BasOnTech/Arduino-Projects-NL/blob/master/mini-weerstation/mini-weerstation-deel-3.ino.
Er ontbreekt echter een duidelijke structuur en opbouw van de sketch. Dat lijkt op een sketch die je al gaandeweg hebt uitgebreid in plaats van dat je vooraf een duidelijke visie had over de opbouw. Als ik iets opzet en het indeel naar functionaliteit, dan wordt de sketch meteen drie keer zo groot. Dus jouw sketch is prima, maar alleen geen schoolvoorbeeld van een goede indeling.

Wanneer je de functies van de Wire library gaat gebruiken, dan ga ik pas echt los :lol: :?


Ik zie het probleem qua structuur niet echt. Heb je een voorbeeld van waar je op doelt? De code is in (naar mijn mening) duidelijke blokken opgedeeld, ieder met hun eigen taak.
Maakt Nederlandstalige Arduino lessen op https://arduino-lessen.nl/

Advertisement

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

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Koepel » 14 Mrt 2018, 00:25

Ik zie het, je hebt er wel goed over nagedacht. Het is alleen anders dan ik gewend ben. Heb ik alweer te snel gesproken. Sorry :oops:

De structuur is niet duidelijk zichtbaar in de loop() functie.
Er worden keuzes gemaakt (is er een knop ingedrukt ? is de temperatuur gewijzigd ?), maar die structuur is niet goed zichtbaar. Dat was eigenlijk het enige dat mij opviel. Door globale variabelen te gebruiken om het programma te sturen, is het gemakkelijk om te gaan rommelen.
Dus nu ging ik daar eens naar kijken. Een zwak punt is bijvoorbeeld de variabele 'buttonLongPress'. Die wordt gezet in readButtonState(), verwerkt en gereset in read1WireTemp(), en bekeken in updateLCD(). De volgorde van de functies in de loop() is dus erg belangrijk, en de updateLCD() kan hem niet meer bekijken want dan is die variabele al gereset.

Het includen van libraries wordt meestal bij elkaar gezet. Dan kun je zien welke libraries geïnstalleerd moeten worden.
Maak je van de #include "DHT.h" ook een #include <DHT.h> ?

Een functie die in de loop() heel vaak wordt aangeroepen en intern zelf de timing verzorgt met millis() heeft vaak "update" in de naam.

Als ik mijn eerste Arduino programma's bekijk, dan is dat vele malen slechter. Ik doe dit alleen om je te supporten 8-) Het is positief bedoelt. Ik hoop dat dat duidelijk is. Maar ik sta nog wel in de startblokken om los te gaan als je de Wire library gaat gebruiken :lol: https://youtu.be/eooJYess3nc?t=16s

Gebruikers-avatar
Berichten: 8
Geregistreerd: 18 Feb 2018, 11:06
Woonplaats: Amsterdam

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor BasOnTech » 14 Mrt 2018, 07:52

Ik ben alleen maar blij met je feedback :) Hou er wel rekening mee dat dit beginners projecten zijn waarbij leesbaarheid / begrijpen boven volledige correctheid gaan. Dit is ook de reden dat de imports bijvoorbeeld niet bij elkaar staan maar dat ze "gesorteerd" staan per onderdeel. Een ander voorbeeld is het resetten van de temperatuur. Dat gaat over temperatuur dus wordt dit gereset in read1WireTemp(). Voor uitleg was dit iig de makkelijkste manier om alles een beetje gescheiden te houden.

Wat bedoel je precies met "Maak je van de #include "DHT.h" ook een #include <DHT.h> ?"
Maakt Nederlandstalige Arduino lessen op https://arduino-lessen.nl/

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

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Koepel » 14 Mrt 2018, 08:49

Volgens mij zet je de 'buttonLongPress' uit in 'read1WireTemp()', dus daarna nog in 'updateLCD()' kijken of die aan staat werkt niet. Die variabele stuurt de code, maar hoe de code daarmee wordt gestuurd zit verborgen in de functies. Daarom is een foutje maken zo gemaakt.

Gevoelsmatig is het niet logisch dat een variabele die de code stuurt in een functie van de temperatuur wordt uitgezet.
Sinds kort heb ik de voorkeur om parameters vaak als reference te doen. Dus mijn voorkeur wijzigt ook nog steeds :o

Een library includen is meestal met groter-dan en kleiner-dan.
Een bestand van je eigen project includen is meestal met dubbele-aanhalingstekens.
Bij Arduino is dat niet zo strak, omdat de Arduino pre-processor de code bij elkaar harkt.
Maar ja, je hebt overal de libraries ge-include met '<' en '>', dus waarom de "DHT.h" niet ?

Gebruikers-avatar
Berichten: 8
Geregistreerd: 18 Feb 2018, 11:06
Woonplaats: Amsterdam

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor BasOnTech » 20 Apr 2018, 22:27

Vandaag een kleine mijlpaal: de 25e les staat nu op https://arduino-lessen.nl/ :D
Maakt Nederlandstalige Arduino lessen op https://arduino-lessen.nl/

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

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Koepel » 21 Apr 2018, 00:11

Mooi 8-)

Geen enkele lichtsensor mag in direct zonlicht. Alleen een zonnecel mag in direct zonlicht. Dus de LDR slijt niet als hij goed gebruikt wordt.

Zoals je hier kunt lezen heb ik Tinkercad geprobeerd: http://arduinoforum.nl/viewtopic.php?f=12&t=2940.
Daarmee heb jouw tutorial gedaan :o
Het is zomaar om te proberen. Je hoeft geen tutorial met Tinkercad te doen, want misschien gaan ze er geld voor vragen, of ze heffen het zomaar op. Maar het werkt wel.
Bijlagen
ldr.png
ldr.png (39.1 KiB) 376 keer bekeken

Gebruikers-avatar
Berichten: 253
Geregistreerd: 15 Nov 2015, 11:54

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Gij Kieken » 21 Apr 2018, 21:29

Op naar de volgende ,ik denk dat dit door menigeen opgevolgd wordt.
Toch heb ik een kleine vraag.
Hoe komt het (wat is de onderliggende achtergrond), dat bij het vastleggen van pin nummers bij heel veel voorbeelden
een int gebruikt wordt i.v.p. const byte ?

Code: Alles selecteren
int ldrPin = A0;              // LDR pin
int ldrVal = 0;               // Waarde van LDR
int ledPin = LED_BUILTIN;     // Ingebouwde LED pin


Als je geheugen zat hebt zoals hier is dit geen probleem.
Zou het gewoon gemakshalve zijn?

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

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor nicoverduin » 21 Apr 2018, 21:55

Een int voor een pinnummer is als je er minder dan 256 hebt sowieso een byte teveel.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 253
Geregistreerd: 15 Nov 2015, 11:54

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Gij Kieken » 21 Apr 2018, 22:57

Mooi omschreven,dus kwestie van een slechte gewoonte aanleren en geraak er dan maar vanaf.

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

Re: Nederlandse videoserie - Arduino voor beginners

Berichtdoor Koepel » 22 Apr 2018, 00:12

Een "slechte" gewoonte is het nou ook weer niet.

Een 'int' zie ik als de standaard voor die processor en compiler. Dat de Arduino Uno 8-bit heeft en de compiler de standaard op 16-bit zet, dan kan ik ook niet helpen ;)

Even tot 3 tellen doe ik toch echt met een 'int'
Code: Alles selecteren
for( int i=0; i<3; i++)
{
  Serial.println( i);
}


Dit officiële voorbeeld gebruikt een 'int' : https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/.
De broncode gebruikt echter een 'uint8_t' : https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/wiring_analog.c#L38.

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast