Temperatuur met cijferweergave en 16 LEDS
15 berichten
• Pagina 2 van 2 • 1, 2
Re: Temperatuur met cijferweergave en 16 LEDS
Jou eerste project is goed geslaagd. Code kan korter en eenvoudiger maar dat komt nog wel.
Het Arduino Cookbook zou verplichte lektuur moeten zijn. Niet alleen voor beginners maar handig om het "hoe-ging-dat-nu-weer" geheugen op te frissen.
Het Arduino Cookbook zou verplichte lektuur moeten zijn. Niet alleen voor beginners maar handig om het "hoe-ging-dat-nu-weer" geheugen op te frissen.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Advertisement
Re: Temperatuur met cijferweergave en 16 LEDS
Na uurtjes lezen en uitproberen ben ik tot het volgend stukje code gekomen wat de " if en else if " zou moeten vervangen.
#include<LM35.h>
float temp;
int tempPin= 0;
int Temperatuur = 0; //als switch
//---BLOKJE 1/2---Code Blink without Delay();-------------//
int tempState = LOW;
long previousMillis = 0;
long interval = 10000; // 10 seconden meting
//--------------------------------------------------------//
//declare each led pin
int led1= 0; //16 graden
int led2= 1; //17 graden
int led3= 2; //18 graden
int led4= 3; //19 graden
int led5= 4; //20 graden
int led6= 5; //21 graden
int led7= 6; //22 graden
int led8= 7; //23 graden
int led9= 8; //24 graden
int led10= 9; //25 graden
int led11= 10; //26 graden
int led12= 11; //27 graden
int led13= 12; //28 graden
int led14= 13; //29 graden
int plusled=A5; //29 graden + boven de 30 graden
int minled = A4; //16 graden - onder de 16 graden
void setup() {
//declare leds as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
pinMode(led14, OUTPUT);
pinMode(plusled,OUTPUT);
pinMode(minled, OUTPUT);
}
void loop() {
//---BLOKJE 2/2---Code Blink without Delay();-------------//
unsigned long currentMillis = millis();
if (currentMillis - previousMillis> interval){
previousMillis = currentMillis;
if (tempState == LOW)
tempState = HIGH;
else
tempState =LOW;
//--------------------------------------------------------//
temp = analogRead(tempPin);
temp= temp *0.491; //analoog voltage = 4.89 volt (0.450)
// 4.89 delen door 1024 * 100
//zou de juiste temperatuur moeten geven.
//maar bij meting omgeving met diverse thermometers
//komt 0.491 bij mij het meest over een.
Temperatuur = temp = analogRead(tempPin);
switch (Temperatuur)
{
case 15: //onder de 16 graden
digitalWrite(led1, LOW);
analogWrite (minled,0);
digitalWrite(led2, HIGH);
break;
case 16: // 16 graden
digitalWrite(led1, LOW);
analogWrite (minled,255);
digitalWrite(led2, HIGH); // 17 graden led uit
break;
case 17: // 17 graden
digitalWrite(led1, HIGH); // 16 graden led uit
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH); // 18 graden led uit etc.
break;
case 18: //18 graden
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
break;
case 19: //19 graden
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
break;
case 20: //20 graden
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
break;
case 21: //21 graden
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
digitalWrite(led7, HIGH);
break;
case 22: //22 graden
digitalWrite(led6, HIGH);
digitalWrite(led7, LOW);
digitalWrite(led8, HIGH);
break;
case 23: //23 graden
digitalWrite(led7, HIGH);
digitalWrite(led8, LOW);
digitalWrite(led9, HIGH);
break;
case 24: //24 graden
digitalWrite(led8, HIGH);
digitalWrite(led9, LOW);
digitalWrite(led10, HIGH);
break;
case 25: //25 graden
digitalWrite(led9, HIGH);
digitalWrite(led10, LOW);
digitalWrite(led11, HIGH);
break;
case 26: //26 graden
digitalWrite(led10, HIGH);
digitalWrite(led11, LOW);
digitalWrite(led12, HIGH);
break;
case 27: //27 graden
digitalWrite(led11, HIGH);
digitalWrite(led12, LOW);
digitalWrite(led13, HIGH);
break;
case 28: //28 graden
digitalWrite(led12, HIGH);
digitalWrite(led13, LOW);
digitalWrite(led14, HIGH);
break;
case 29: //29 graden
digitalWrite(led13, HIGH);
digitalWrite(led14, LOW);
analogWrite (plusled, 255);
break;
case 30: // 30 graden en hoger
digitalWrite(led14, LOW);
analogWrite (plusled, 0);
break;
default:
digitalWrite(led1,HIGH);
}
}
}
Ik ben er nog niet achter wat "int tempState = LOW; " en
if (tempState == LOW)
tempState = HIGH;
else
tempState =LOW; precies voor functie heeft.
Als ik het weg laat zie ik geen verschil optreden. Ik heb deze code nog niet uit geprobeerd in mijn project.
Alleen op een breadboard met een thermistor en vijf leds. Daar deden zich geen problemen voor.
#include<LM35.h>
float temp;
int tempPin= 0;
int Temperatuur = 0; //als switch
//---BLOKJE 1/2---Code Blink without Delay();-------------//
int tempState = LOW;
long previousMillis = 0;
long interval = 10000; // 10 seconden meting
//--------------------------------------------------------//
//declare each led pin
int led1= 0; //16 graden
int led2= 1; //17 graden
int led3= 2; //18 graden
int led4= 3; //19 graden
int led5= 4; //20 graden
int led6= 5; //21 graden
int led7= 6; //22 graden
int led8= 7; //23 graden
int led9= 8; //24 graden
int led10= 9; //25 graden
int led11= 10; //26 graden
int led12= 11; //27 graden
int led13= 12; //28 graden
int led14= 13; //29 graden
int plusled=A5; //29 graden + boven de 30 graden
int minled = A4; //16 graden - onder de 16 graden
void setup() {
//declare leds as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
pinMode(led14, OUTPUT);
pinMode(plusled,OUTPUT);
pinMode(minled, OUTPUT);
}
void loop() {
//---BLOKJE 2/2---Code Blink without Delay();-------------//
unsigned long currentMillis = millis();
if (currentMillis - previousMillis> interval){
previousMillis = currentMillis;
if (tempState == LOW)
tempState = HIGH;
else
tempState =LOW;
//--------------------------------------------------------//
temp = analogRead(tempPin);
temp= temp *0.491; //analoog voltage = 4.89 volt (0.450)
// 4.89 delen door 1024 * 100
//zou de juiste temperatuur moeten geven.
//maar bij meting omgeving met diverse thermometers
//komt 0.491 bij mij het meest over een.
Temperatuur = temp = analogRead(tempPin);
switch (Temperatuur)
{
case 15: //onder de 16 graden
digitalWrite(led1, LOW);
analogWrite (minled,0);
digitalWrite(led2, HIGH);
break;
case 16: // 16 graden
digitalWrite(led1, LOW);
analogWrite (minled,255);
digitalWrite(led2, HIGH); // 17 graden led uit
break;
case 17: // 17 graden
digitalWrite(led1, HIGH); // 16 graden led uit
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH); // 18 graden led uit etc.
break;
case 18: //18 graden
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
break;
case 19: //19 graden
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
break;
case 20: //20 graden
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
break;
case 21: //21 graden
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
digitalWrite(led7, HIGH);
break;
case 22: //22 graden
digitalWrite(led6, HIGH);
digitalWrite(led7, LOW);
digitalWrite(led8, HIGH);
break;
case 23: //23 graden
digitalWrite(led7, HIGH);
digitalWrite(led8, LOW);
digitalWrite(led9, HIGH);
break;
case 24: //24 graden
digitalWrite(led8, HIGH);
digitalWrite(led9, LOW);
digitalWrite(led10, HIGH);
break;
case 25: //25 graden
digitalWrite(led9, HIGH);
digitalWrite(led10, LOW);
digitalWrite(led11, HIGH);
break;
case 26: //26 graden
digitalWrite(led10, HIGH);
digitalWrite(led11, LOW);
digitalWrite(led12, HIGH);
break;
case 27: //27 graden
digitalWrite(led11, HIGH);
digitalWrite(led12, LOW);
digitalWrite(led13, HIGH);
break;
case 28: //28 graden
digitalWrite(led12, HIGH);
digitalWrite(led13, LOW);
digitalWrite(led14, HIGH);
break;
case 29: //29 graden
digitalWrite(led13, HIGH);
digitalWrite(led14, LOW);
analogWrite (plusled, 255);
break;
case 30: // 30 graden en hoger
digitalWrite(led14, LOW);
analogWrite (plusled, 0);
break;
default:
digitalWrite(led1,HIGH);
}
}
}
Ik ben er nog niet achter wat "int tempState = LOW; " en
if (tempState == LOW)
tempState = HIGH;
else
tempState =LOW; precies voor functie heeft.
Als ik het weg laat zie ik geen verschil optreden. Ik heb deze code nog niet uit geprobeerd in mijn project.
Alleen op een breadboard met een thermistor en vijf leds. Daar deden zich geen problemen voor.
Re: Temperatuur met cijferweergave en 16 LEDS
je lijkt tempstate als een flag te gebruiken die elke 10 seconden van waarde veranderd.
maar in je code word er niks mee gedaan. behalve dan dat de tijd gecheckt word en de flag dus veranderd.
wou je elke 10 seconden iets doen?
also ik vroeg me af hoe je je arduino programeerd
maar in je code word er niks mee gedaan. behalve dan dat de tijd gecheckt word en de flag dus veranderd.
wou je elke 10 seconden iets doen?
also ik vroeg me af hoe je je arduino programeerd
Re: Temperatuur met cijferweergave en 16 LEDS
Om de 10 seconden wordt de temperatuur gelezen en de leds aangepast. En dat werkt ook.
Ik heb een extra clone van de Arduino Uno gemaakt. Hierop plaats ik de ATmega328P-PU chip.
Ik sluit de clone aan op het Arduino bordje en programeer de chip. Op de manier zoals die op het internet te vinden is.
Zie Arduino-no-FTDI2. Omdat het nogal omslachtig is en ik de chip niet te vaak wil lichten heb ik de bovenstaande code
er nog niet opgezet. De bedoeling is de code nog meer op te ruimen en kleiner te maken.
Met de bovenstaande code schilt het al de helft aan regels ten opzichte van mijn oorspronkelijke code.
Maar of ik op de goede weg ben is wat ik graag (van wat Shooter eerder bedoelde) hier wil horen.
Mijn volgende stap is om te kijken hoe ik, wat Shooter op 10 Jul 2015 aanrade, in de code kan verwerken.
Moet dit nog uit dokteren.
Ik heb een extra clone van de Arduino Uno gemaakt. Hierop plaats ik de ATmega328P-PU chip.
Ik sluit de clone aan op het Arduino bordje en programeer de chip. Op de manier zoals die op het internet te vinden is.
Zie Arduino-no-FTDI2. Omdat het nogal omslachtig is en ik de chip niet te vaak wil lichten heb ik de bovenstaande code
er nog niet opgezet. De bedoeling is de code nog meer op te ruimen en kleiner te maken.
Met de bovenstaande code schilt het al de helft aan regels ten opzichte van mijn oorspronkelijke code.
Maar of ik op de goede weg ben is wat ik graag (van wat Shooter eerder bedoelde) hier wil horen.
Mijn volgende stap is om te kijken hoe ik, wat Shooter op 10 Jul 2015 aanrade, in de code kan verwerken.
Moet dit nog uit dokteren.
Re: Temperatuur met cijferweergave en 16 LEDS
je code is niet duidelijk telezen zonder
waar door indentatie en dus leesbaarheid verloren gaat
maar als ik naar de code kijk dan zie ik niet dat hij elke 10 seconden uigelezen word.
maar elke keer als er opnieuw door de loop gelopen word.
tags.[code][/code]
waar door indentatie en dus leesbaarheid verloren gaat
maar als ik naar de code kijk dan zie ik niet dat hij elke 10 seconden uigelezen word.
maar elke keer als er opnieuw door de loop gelopen word.
15 berichten
• Pagina 2 van 2 • 1, 2
Terug naar Afgeronde projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten