waarde optellen
10 berichten
• Pagina 1 van 1
- Driewegstekker
- Berichten: 6
- Geregistreerd: 12 Sep 2017, 10:46
waarde optellen
Beste mensen,
Ik ben pas nieuw hier en ook pas begonnen met programeren.
ik heb nu twee projekten gedaan een windrichtingsmeter met lcd uitlezing en een met led uitlezing.
Eerder werkte ik met Flowcode dat werd te duur om te upgrade daarom ben ik begonnen met arduino.
Ik heb nu een digitale klok geprogrameerd met externe sec puls gever.
Dat zou niet hoeven maar ik vond dat gewoon leuk.
Ik kom er maar niet uit hoe ik nu knoppen moet programeren om de klok op tijd te zetten.
Ik kan wel een knop programeren maar dan telt hij met de snelheid van 16mHz de waarde op.
Ik wil natuurlijk een knop indrukken en dan met 1 ophogen.
Hoe moet ik dat nu doen?
Hier is mijn code.
cpp code
Groet Henk.
Ik ben pas nieuw hier en ook pas begonnen met programeren.
ik heb nu twee projekten gedaan een windrichtingsmeter met lcd uitlezing en een met led uitlezing.
Eerder werkte ik met Flowcode dat werd te duur om te upgrade daarom ben ik begonnen met arduino.
Ik heb nu een digitale klok geprogrameerd met externe sec puls gever.
Dat zou niet hoeven maar ik vond dat gewoon leuk.
Ik kom er maar niet uit hoe ik nu knoppen moet programeren om de klok op tijd te zetten.
Ik kan wel een knop programeren maar dan telt hij met de snelheid van 16mHz de waarde op.
Ik wil natuurlijk een knop indrukken en dan met 1 ophogen.
Hoe moet ik dat nu doen?
Hier is mijn code.
cpp code
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //These are the pins used on this shield
void setup(){
pinMode(PulsIn, INPUT);
attachInterrupt(0,rpm, RISING);
pinMode(3,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
}
void loop(){
led=digitalRead(2);
if(led == HIGH)
{digitalWrite(3,HIGH);}
else{digitalWrite(3,LOW);}
if(puls>59){
puls=0;
minuten++;
lcd.clear();}
if(minuten>59){
minuten=0;
uren++;}
if(uren>23){
uren=0;}
lcd.setCursor(5,0);
lcd.print("TIME");
lcd.setCursor(5,2);
lcd.print(":");
lcd.print(puls);
lcd.setCursor(2,2);
lcd.print(":");
lcd.print(minuten);
lcd.setCursor(0,2);
lcd.print(uren);
}
Groet Henk.
Advertisement
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: waarde optellen
Het eerste wat opvalt is, de code is niet compleet behoudens de andere fouten.
Waar is de ISR routine (vreemde benaming ook rpm?)
Waar is de ISR routine (vreemde benaming ook rpm?)
- Driewegstekker
- Berichten: 6
- Geregistreerd: 12 Sep 2017, 10:46
Re: waarde optellen
Hallo Gij,
Ik ben een beginneling en ik had niet het gevoel dat er fouten in zouden zitten.
Ik heb veel op internet gekeken en stukjes uitgeprobeerd wat met een klok te maken had.
Bij het wegschrijven was er geen foutmelding en de klok loopt goed.
Wat bedoel je met een ISR routine?
Ik ben een beginneling en ik had niet het gevoel dat er fouten in zouden zitten.
Ik heb veel op internet gekeken en stukjes uitgeprobeerd wat met een klok te maken had.
Bij het wegschrijven was er geen foutmelding en de klok loopt goed.
Wat bedoel je met een ISR routine?
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: waarde optellen
Regel 5 < pinMode(PulsIn, INPUT);>
PulsIn is niet gedeclareerd.
Regel 6 < attachInterrupt(0,rpm, RISING);> verwijst naar een interrupt service routine.
Die zie ik niet staan in jouw code.
PulsIn is niet gedeclareerd.
Regel 6 < attachInterrupt(0,rpm, RISING);> verwijst naar een interrupt service routine.
Die zie ik niet staan in jouw code.
Re: waarde optellen
- Code: Alles selecteren
led=digitalRead(2);
if(led == HIGH)
{[code]digitalWrite(3,HIGH);[/code]}
else{digitalWrite(3,LOW);}
kun je vervangen door
- Code: Alles selecteren
digitalWrite(3,digitalRead(2));
verder mis ik de routine (interupt ) om de puls op te hogen
als je daarin ook een regel erbij maakt dat er 1 opgeteld wordt als er een knop ingedrukt wordt dan ben je er al.
overigens zou ik de display maar 1 keer per seconde beschrijven.
paul deelen
shooter@home.nl
shooter@home.nl
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: waarde optellen
Hallo Driewegstekker hier wat leesvoer <https://www.arduino.cc/en/Reference/AttachInterrupt>
- Driewegstekker
- Berichten: 6
- Geregistreerd: 12 Sep 2017, 10:46
Re: waarde optellen
Hallo allen,
Ik ben er inmiddels uit en de knoppen werken.
Ik ben een beginneling en ik moet nog veel leren dat zie ik wel alle begin is moeilijk.
En ik weet dat er meerdere wegen naar Rome leiden.
Bedankt voor jullie reacties!
Ik ben er inmiddels uit en de knoppen werken.
Ik ben een beginneling en ik moet nog veel leren dat zie ik wel alle begin is moeilijk.
En ik weet dat er meerdere wegen naar Rome leiden.
Bedankt voor jullie reacties!
- Gij Kieken
- Berichten: 636
- Geregistreerd: 15 Nov 2015, 11:54
Re: waarde optellen
Leuk om te horen dat het werkt.
Nog leuker is het wanneer mede forum leden de oplossing ook zien, iedereen heeft er dan iets aan.
Nog leuker is het wanneer mede forum leden de oplossing ook zien, iedereen heeft er dan iets aan.
- Driewegstekker
- Berichten: 6
- Geregistreerd: 12 Sep 2017, 10:46
Re: waarde optellen
Beste forum leden,
Dit is mijn digitale klok.
Ik weet bijna zeker dat er hobbyisten zijn die het anders geprogrammeerd zouden hebben.
Maar ik ben net begonnen met programeren en ik zag nog geen betere manier.
Er moeten nog verbeteringen aangebracht worden maar dat komt later.
// variable benoemen.
int volatile sec;
int optel;
int laastestatus;
int laastestat;
int knopstatus;
int knopstat;
int knop=A2;
int knoppe=A3;
int minuten;
int uren;
int led;
int PulsIn = 2;
void rpm(){sec++;}
/*-----( Import needed libraries )-----*/
#include <LiquidCrystal.h>
/*-----( Declare objects )-----*/
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup(){
pinMode(knop, INPUT); //ingang A2
pinMode(PulsIn, INPUT); //digitale ingang 2
attachInterrupt(0,rpm, RISING);
pinMode(3,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
}
void loop(){
knopstatus = digitalRead(knop);
if (knopstatus != laastestatus) {
if (knopstatus == HIGH) {
minuten=minuten+1;
if(minuten>59){
minuten=0;
lcd.clear();}
}
}
knopstat = digitalRead(knoppe);
if (knopstat != laastestat) {
if (knopstat == HIGH) {
uren=uren+1;
if(uren>23){
uren=0;
lcd.clear();}
}
}
led=digitalRead(2);
if(led == HIGH)
{digitalWrite(3,HIGH);}
else{digitalWrite(3,LOW);}
if(sec>59){
sec=0;
minuten++;
lcd.clear();}
if(minuten>59){
minuten=0;
uren++;}
if(uren>23){
uren=0;}
lcd.setCursor(5,0);
lcd.print("TIME");
lcd.setCursor(5,2);
lcd.print(":");
lcd.print(sec);
lcd.setCursor(2,2);
lcd.print(":");
lcd.print(minuten);
lcd.setCursor(0,2);
lcd.print(uren);
laastestatus=knopstatus;
laastestat=knopstat;
}
Groet Henk.
Dit is mijn digitale klok.
Ik weet bijna zeker dat er hobbyisten zijn die het anders geprogrammeerd zouden hebben.
Maar ik ben net begonnen met programeren en ik zag nog geen betere manier.
Er moeten nog verbeteringen aangebracht worden maar dat komt later.
// variable benoemen.
int volatile sec;
int optel;
int laastestatus;
int laastestat;
int knopstatus;
int knopstat;
int knop=A2;
int knoppe=A3;
int minuten;
int uren;
int led;
int PulsIn = 2;
void rpm(){sec++;}
/*-----( Import needed libraries )-----*/
#include <LiquidCrystal.h>
/*-----( Declare objects )-----*/
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup(){
pinMode(knop, INPUT); //ingang A2
pinMode(PulsIn, INPUT); //digitale ingang 2
attachInterrupt(0,rpm, RISING);
pinMode(3,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
}
void loop(){
knopstatus = digitalRead(knop);
if (knopstatus != laastestatus) {
if (knopstatus == HIGH) {
minuten=minuten+1;
if(minuten>59){
minuten=0;
lcd.clear();}
}
}
knopstat = digitalRead(knoppe);
if (knopstat != laastestat) {
if (knopstat == HIGH) {
uren=uren+1;
if(uren>23){
uren=0;
lcd.clear();}
}
}
led=digitalRead(2);
if(led == HIGH)
{digitalWrite(3,HIGH);}
else{digitalWrite(3,LOW);}
if(sec>59){
sec=0;
minuten++;
lcd.clear();}
if(minuten>59){
minuten=0;
uren++;}
if(uren>23){
uren=0;}
lcd.setCursor(5,0);
lcd.print("TIME");
lcd.setCursor(5,2);
lcd.print(":");
lcd.print(sec);
lcd.setCursor(2,2);
lcd.print(":");
lcd.print(minuten);
lcd.setCursor(0,2);
lcd.print(uren);
laastestatus=knopstatus;
laastestat=knopstat;
}
Groet Henk.
Re: waarde optellen
er mag wat commentaar bij en zorg dat je duidelijk bent met laastestatus en laastestat knopstat etc, want ik weet het nu al niet meer.
maar je programma ziet er prima uit hoor.
maar je programma ziet er prima uit hoor.
paul deelen
shooter@home.nl
shooter@home.nl
10 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten