RGB led doet niet wat ik wil dat hij doet

algemene C code
Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 31 Aug 2015, 20:37

Hey,

Ik heb laatst de arduino starter kit gekocht. Ik vind dit heel leuk om te doen.

Ik heb nu geprobeerd de 'love-o-meter' en de 'color mixing lamp' bij elkaar te voegen. Dit is mijn code: http://pastecloud.net/ASdpE6JRr9

Het werkt wel, alleen het lampje knippert heel erg. Dat komt doordat de temperaturen ineens veel hoger of lager worden, en dan weer normaal. Dit krijg ik uiteindelijk:
Afbeelding

Alvast bedankt voor alle hulp!

Advertisement

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

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor Duality » 31 Aug 2015, 23:12

wat voor een sensor gebruik je?
en hoe heb je de sensor aangesloten ?
en hoe zijn de leds aangesloten ?

probeer is om de scale waarde te printen, kijken of die gekke sprongen maakt.
anders print de waarden die uitschrijft met analogWrite()

het is altijd handig om veel serial prints te doen om te kijken hoe iets werkt en als je dingen wil debuggen.

Groet,
Duality

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

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor nicoverduin » 01 Sep 2015, 08:52

Dit zijn toch redelijke metingen moet ik zeggen. Een van de oorzaken dat je meetverschillen krijgt is vaak doordat je er van uit gaat de de voeding exact 5V geeft en constant. Helaas is de waarheid wat anders. De Arduino neemt de 5V als referentie spanning op. Als die wat fluctueert dan krijg je hetzelfde effect op je meting.
Daarnaast heb ik even jouw formule uit de code in Excel gegooid. De berekeningen kloppen precies.
Dus als je meer geleidelijkheid wilt gebruiken zou je bijvoorbeeld het voortschrijdend gemiddelde kunnen nemen over de laatste 10 metingen.
voorbeeld:
cpp code
#define AANTAL_METINGEN  10
float metingen[AANTAL_METINGEN]; // tabel met aantal metingen voor voorschrijdend gemiddelde
uint8_t metingIndex; // verwijzing naar laatste meting in tabel
float som; // som van alle metingen in de tabel
boolean tabelGevuld; // indicatie dat de tabel volledig gevuld is


in de setup()

cpp code
//
// wis metingen in de tabel
//
for (uint8_t i = 0; i < 10; i++) {
metingen[i] = 0;
}
//
// initialiseer parameters
//
tabelGevuld = false;
som = 0;
metingIndex = 0;


in de loop()

cpp code
//
// als je de temperatuur hebt
// eerst de oudste waarde van de som aftrekken
//
som = som - metingen[metingIndex];
//
// voeg de laatste meting toe aan de tabel
//
metingen[metingIndex] = temperature;
//
// nieuwe waarde toevoegen aan de som
//
som = som + metingen[metingIndex];
//
// bepaal het voortschrijdend gemiddelde
//
if (tabelGevuld){
//
// bij een volledig gevulde tabel
//
float gemiddeldeTemperatuur = som / AANTAL_METINGEN;
} else {
//
// als de tabel nog niet vol is
//
float gemiddeldeTemperatuur = som / (metingIndex + 1);
}
//
// verhoog de metingen index
//
metingIndex = metingIndex + 1;
//
// test voor loop around
//
if (metingIndex == AANTAL_METINGEN){
metingIndex = 0;
tabelGevuld = true;
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 01 Sep 2015, 16:56

Bedankt voor jullie reacties!

Kan je niet gewoon iets doen zoals:

Code: Alles selecteren
const int sensorPin = A0; // pin for the temp sensor
const int baselineTemp = 21.0;
float temperatureDifference = 0;
float averageTemperatureDifference = 0;
 
const int greenLEDPin = 9;
const int redLEDPin = 11;
const int blueLEDPin = 10;
 
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
 
  pinMode(greenLEDPin, OUTPUT);
  pinMode(redLEDPin, OUTPUT);
  pinMode(blueLEDPin, OUTPUT);
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
    for(int x = 0; x < 10; x+=1){
        int sensorValue = analogRead(sensorPin);
        float voltage = (sensorValue/1024.0) * 5.0; // changes the value of the temp sensor to a voltage between 0 and 5
        float temperature = (voltage - .5) * 100; // changes the voltage to the real temperature
        temperatureDifference = temperature - baselineTemp;
        averageTemperatureDifference = averageTemperatureDifference + temperatureDifference;
    }

    averageTemperatureDifference = averageTemperatureDifference / 10;

  float temperatureDifference = temperature - baselineTemp; // checks how much degrees celcius the temperature is above the baseLineTemp so           everything above the baselinetemp is making the RGB led more red
  if(temperatureDifference <= 0){
    averageTemperatureDifference = 0;
  }else if(temperatureDifference > 10){
    averageTemperatureDifference = 10;
  }
 
  float scale = averageTemperatureDifference * 2;
 
  analogWrite(redLEDPin, scale * 25); // changes the scale from the temperature to a value that the RGB led can use
  analogWrite(blueLEDPin, 250 - (scale * 25));
  analogWrite(greenLEDPin, 0);
}

Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 01 Sep 2015, 18:17

Blijkbaar geeft mijn code nu ineens hele andere resultaten. Ik zou echt niet weten waardoor dat komt, ik heb het ook nog eens getest met de eerdere code die in mijn beginpost staat. Er komen resultaten uit van 400 graden...

Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 01 Sep 2015, 19:45

Blijkbaar geeft de temperatuur sensor rond de 4.7 volt af. Dat kan natuurlijk niet kloppen.

Is mijn temperatuur sensor kapot o.i.d.?

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

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor nicoverduin » 01 Sep 2015, 20:09

Geen idee. Zou kunnen of je hebt ergens iets niet goed verbonden. Als je alles hebt verbonden met die draadjes met de ronde stekkertjes kun je die beter in de vuilnisbak gooien en vervangen voor draadjes met Dupont connectoren(die vierkante). Zijn een bron van storingen en lekker goedkoop waardoor je ze vaak in die kitjes tegenkomt
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 01 Sep 2015, 21:16

nicoverduin schreef:Geen idee. Zou kunnen of je hebt ergens iets niet goed verbonden. Als je alles hebt verbonden met die draadjes met de ronde stekkertjes kun je die beter in de vuilnisbak gooien en vervangen voor draadjes met Dupont connectoren(die vierkante). Zijn een bron van storingen en lekker goedkoop waardoor je ze vaak in die kitjes tegenkomt

Ik heb de draadjes vervangen alleen hij geeft nog steeds hetzelfde aan. Heb je enig idee waar het anders aan kan liggen?

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

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor nicoverduin » 02 Sep 2015, 07:32

Het zou kunnen dat je sensor defect is. Alles kan natuurlijk. Welke sensor gebruik je?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 31 Aug 2015, 20:20

Re: RGB led doet niet wat ik wil dat hij doet

Berichtdoor ItsKasper » 02 Sep 2015, 10:16

nicoverduin schreef:Het zou kunnen dat je sensor defect is. Alles kan natuurlijk. Welke sensor gebruik je?

Ik gebruik de TMP36, degene die je bij de arduino starter kit krijgt.

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten