Wat soms ook helpt is om naar andere websites te kijken die hetzelfde issue aanpakken. Dan kun je vergelijken en de krenten uit de pap halen.
https://www.google.nl/sea...=chrome&es_sm=93&ie=UTF-8
Laters
=========================================================
Mogge, ik heb jouw link beter bekeken
http://playground.arduino.cc/Main/ReadingRPM
Eerste wat me opvalt is dit :
Connect the fan like this: en dan geeft de schrijver een wazige foto. Meestal ben ik dan al vertrokken.
Maar goed, laten we het een kans geven deze keer.
Vervolgens van belang is dit :
If the internal pull-up resistor for pin 2 (interrupt 0) is enabled by adding the line:
digitalWrite(2, HIGH); to setup(), then the hall effect sensor can be connected directly to pin 2 without requiring an external 10k pull-up resistor and LED.
Die regel zie ik niet in de sketch en in de onderstaande afbeelding zit een 1K (?)
Vervolgens geeft hij een sketch maar daaronder staat weer een update. Dat betekent wrs dat de eerste sketch niet goed is, die kan je dus wel schrappen.
Onder de tweede sketch staat een link,
http://elimelecsarduinopr...measure-rpms-arduino.html
daar zie je weer een andere sketch. Vrijwel identiek zover ik kon nagaan behalve wat eerst
half_revolutions was is nu
rpm geworden en de int is
volatile byte gemaakt. Schijnt van belang te zijn in geval een interrupt :
http://arduino.cc/en/Reference/Volatile Zie ook de comments onder dat elimelec-artikel.
Voordeel is wel dat er een schema bij staat.
En nog iets over jouw sketch, deze regel(s)
C:
1
2
3
4
| if (rpm <1000);
lcd.setCursor(1,0);
lcd.print(rpm, DEC);
if (rpm >1000); |
Zover ik weet -en ik ben zelf nog lerend om enigzins te programmeren, een reden om met je mee te kijken- wordt een if () altijd met een { afgesloten tenzij het binnen 1 regel wordt opgesteld.
Jij gebruikt If () ;
Dat is niet goed volgens mij. Jouw sketch compileert echter wel, dus op dit moment ben ik daar ook niet zeker van. Ik zal het moeten opzoeken. Overigens dat een sketch compileert wil niet zeggen dat het dan het gewenste effect oplevert.
Edit\ Inmiddels opgezocht, het staat bovenaan deze pagina :
http://www.cplusplus.com/doc/tutorial/control/
cout<<"......."; is je misschien onbekend maar dat is ongeveer hetzelfde als Serial.print(".....");
Dit mag dus wel :
code:
1
| if (rpm <1000) lcd.setCursor(1,0); |
Maar omdat jij twee statements binnen één If wil zetten heb je dus de { } nodig
code:
1
2
3
4
| if (rpm <1000) {
lcd.setCursor(1,0);
lcd.print(rpm, DEC);
} |
Dat is tenminste wat ik eruit opmaak.
[
Voor 99% gewijzigd door
kitao op 16-05-2014 08:30
]