Temperatuur met cijferweergave en 16 LEDS

Toon hier Uw afgeronde projecten aan anderen.
Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Temperatuur met cijferweergave en 16 LEDS

Berichtdoor Rudi » 12 Jul 2015, 12:51

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.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Advertisement

Gebruikers-avatar
Berichten: 15
Geregistreerd: 28 Sep 2014, 00:10

Re: Temperatuur met cijferweergave en 16 LEDS

Berichtdoor Arekkusu » 13 Jul 2015, 00:14

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.

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: Temperatuur met cijferweergave en 16 LEDS

Berichtdoor Duality » 13 Jul 2015, 02:37

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 :)

Gebruikers-avatar
Berichten: 15
Geregistreerd: 28 Sep 2014, 00:10

Re: Temperatuur met cijferweergave en 16 LEDS

Berichtdoor Arekkusu » 13 Jul 2015, 11:25

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.

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: Temperatuur met cijferweergave en 16 LEDS

Berichtdoor Duality » 13 Jul 2015, 17:50

je code is niet duidelijk telezen zonder
[code][/code]
tags.
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.

Vorige

Terug naar Afgeronde projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten