Sida 1 av 1

Problem med en sketch till Arduino...

Postat: 20 maj 2013, 22:09
av ZerQ
Hej

Jag har precis börjat med arduino och håller på att göra om en sketch för att anpassa och prova mig fram men får inte det att fungera...

Jag ska tilldela oldC samma värde som degC har efter en if sats men tilldelningen fungerar inte, postar koden så ni ser vad jag har gjort.

Koden är ursprungligen ifrån Lawicel AB

Kod: Markera allt

/*
  TMP36 Analog Temp Sensor Sample Program using float variables
  
  For full instrutructions (in Swedish only), see:
  http://www.lawicel.se/blog/?page_id=838
  
  Created APR-19, 2013 by Lars Wictorsson
  LAWICEL AB, http://www.lawicel-shop.se
  
  This example code is in the public domain.
*/

void setup()
{
// Initiate serial port at 9600baud  
  Serial.begin(9600);
}

void loop()
{
  int   rawAnalogValue;
  float volt, degC, oldC;


  rawAnalogValue = analogRead(0);


  volt = rawAnalogValue * 5.0 / 1023.0;


  degC = (volt - 0.5) * 100.0;


  if (oldC == 0.00)
  {
    oldC = degC;
  }
  
  if (degC < oldC)
  {
    Serial.print("Ny lagre temperatur ar: ");
    Serial.print(degC);
    Serial.println("C");
    Serial.print(oldC);
    oldC = degC;
  }
  else if (degC > oldC)
  {
    Serial.print("Ny hogre temperatur ar: ");
    Serial.print(degC);
    Serial.println("C");
    Serial.print(oldC);
    oldC = degC;
  }
  else
  {
    Serial.print("Temperaturen ar: ");
    Serial.print(degC);
    Serial.println("C");
    oldC = degC;
  }
  
  delay(5000); // Vänta 5 sekunder innan ny mätning
}

Re: Problem med en sketch till Arduino...

Postat: 21 maj 2013, 04:19
av Osprey
Jag förstår nog inte riktigt här för det enda jag ser är två lösryckta funktioner (setup() och loop())utan något samband. Hur de anropas eller används i ett program ser jag ingenting av.

Tilldelningen funkar säkert, men den blir ju lokal i loop() och hur loop() anropas eller används ser jag inte, likaväl som loop() inte är någon loop...

Re: Problem med en sketch till Arduino...

Postat: 22 maj 2013, 14:46
av ZerQ
Setup{} definierar eventuella värden eller som i detta att serien utgången ska aktiveras och med vilken baudrate. Detta körs först sedan går Arduinon in i lopp{} allt som finns i lopp körs konternueligt tills man bryter strömmen.

Men jag kan inte få tilldelningen att fungera, degC får korrekt värde men värdet tilldelas inte oldC när jag vill...

Re: Problem med en sketch till Arduino...

Postat: 22 maj 2013, 18:35
av m!rage
Rent allmänt är det dumt att jämföra likhet när det gäller flyttal (dina variabler oldC och degC) på grund av avrundningsfel. Det som ser ut att vara t.ex. 0 kanske i själva verket är 0,00000124873 och det är ju inte alls samma sak för en dator.

Re: Problem med en sketch till Arduino...

Postat: 23 maj 2013, 00:50
av Osprey
ZerQ skrev:sedan går Arduinon in i lopp{} allt som finns i lopp körs konternueligt tills man bryter strömmen.
Jamen loop() är ju i sig ingen loop, utan det är ju så att loop() i sin tur anropas av något som utgör själva loopen.

Detta innebär ju automatiskt att den glömmer av värdet på oldC mellan varje gång som loop() anropas. För att få det att funka måste du antingen ändra i logiken så att det är loop() själv som loopar eller också deklarera oldC som static.

Det vill säga flyttalsdeklarationen blir:

Kod: Markera allt

float           volt, degC;
static float    oldC=0;