Hjælp med projekt. (Læst 2535x)

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Hjælp med projekt.
« Dato: Februar 03, 2014, 16:56:19 »
Er i gang med projekt på elektronikfagtekniker. Skal lave et speedometer og en temp. Har lavet dem, hver for sig, men kan ikke blande dem sammen hvad gør jeg forkert??

Den virker fint alene:
Kode:
#include <Servo.h>

Servo myServo;                                                 // Servo motor 


int const potPin = A0;                                         // Analog pin hvor der er monteret et potmeter
int potVal;                                                    // Ud læs data fra analog porten 
int angle;                                                     // Hvor servo motoren skal stå 

const int alarm = 8;

    void setup() 
    {
      myServo.attach(9);                                       // Det er til servomotoren på pin 9 
      Serial.begin(9600);                                      // Til serial komunitation
      pinMode (8,OUTPUT);                                      // Til busser
      
    }

void loop() 
    {
        potVal = analogRead(potPin);                           // Læs potiometeret posion
       
                 
        angle = map(potVal, 0, 1023, 0, 200);                 // Nummert fra potionmeter

           
         Serial.print(" Km/t: ");                             //Vis hastigheden
        Serial.println(angle); 

      myServo.write(angle);
    
      if (angle >80)                                         // når hatsigheden kommer over 80
      {
      digitalWrite(8,HIGH);
     }
      else
     {
      digitalWrite(8,LOW);
      }
 
          
      delay(150);                                           // Delay på 150 milli sek
} 

Den her virker også:

Kode:
const int temperaturePin = 0;


void setup()
{
Serial.begin(9600);
}


void loop()
{
  float voltage, degreesC, degreesF;
    voltage = getVoltage(temperaturePin);
    degreesC = (voltage - 0.5) * 100.0;
    degreesF = degreesC * (9.0/5.0) + 32.0;
  
  Serial.print("voltage: ");
  Serial.print(voltage);
  Serial.print("  deg C: ");
  Serial.println(degreesC);
  Serial.print("  deg F: ");
  Serial.println(degreesF);
   delay(1000); // repeat once per second (change as you wish!)
}


float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}
Citér
Skriver ikke kan finde getVoltage når jeg blander dem sammen.

Hvordan blander jeg dem sammen??

 

Offline kjoller

  • U=I*R
  • ***
  • Indlæg: 45
  • Antal brugbare Indlæg: 8
    • Vis profil
    • The Electronic Map Room
Sv: Hjælp med projekt.
« Svar #1 Dato: Februar 03, 2014, 18:02:06 »
Såvidt jeg kan se ved et hurtigt blik over din kode, så burde linjerne i void(loop) ikke konflikte med hinanden (især hvis du sparer delay(1000); væk - så må du leve med lidt mere output på den serielle linje)

Husk at du kun skal have én void loop(); og én void(setup);

Når den skriver at den ikke kan finde GetVoltage, så skal du i første omgang tjekke om du har husket at kopiere funktionen med over. Hvis du har det, så skal du tjekke at dine tuborg-parenteser matcher, det kan være en forklaring på at den ikke anderkender at funktionen er der.

Hvis du poster den samlede kode, så er det nok nemmere at lure hvad du gør forkert :-)

 

Offline kjoller

  • U=I*R
  • ***
  • Indlæg: 45
  • Antal brugbare Indlæg: 8
    • Vis profil
    • The Electronic Map Room
Sv: Hjælp med projekt.
« Svar #2 Dato: Februar 03, 2014, 18:48:51 »
Okay, og så kom jeg alligevel til at lave arbejdet for dig. Jeg kunne ikke lade være :-)

For din egen skyld, så prøv lige selv først, det er velsagtens mening at der skal være læring i det. Og der er ikke noget mere lærerigt end at finde ud af hvad man har gjort forkert.

Men det her compiler, jeg ved dog ikke om det giver dig hvad du vil have:

Kode: (c) [Vælg]
#include <Servo.h>

Servo myServo;                      // Servo motor

int const potPin = A0;              // Analog pin hvor der er monteret et potmeter
int potVal;                         // Ud læs data fra analog porten
int angle;                          // Hvor servo motoren skal stå
float voltage, degreesC, degreesF;

const int alarm = 8;
const int temperaturePin = 0;

void setup()
{
    myServo.attach(9);                       // Det er til servomotoren på pin 9
    Serial.begin(9600);                      // Til serial komunitation
    pinMode (8,OUTPUT);                      // Til busser   
}

void loop()
{
    potVal = analogRead(potPin);             // Læs potiometeret posion
    angle = map(potVal, 0, 1023, 0, 200);    // Nummert fra potionmeter
    Serial.print(" Km/t: ");                 //Vis hastigheden
    Serial.println(angle);
    myServo.write(angle);
    if (angle >80)                           // når hatsigheden kommer over 80
    {
        digitalWrite(8,HIGH);
    } else {
        digitalWrite(8,LOW);
    }

    voltage = getVoltage(temperaturePin);
    degreesC = (voltage - 0.5) * 100.0;
    degreesF = degreesC * (9.0/5.0) + 32.0; 
    Serial.print("voltage: ");
    Serial.print(voltage);
    Serial.print("  deg C: ");
    Serial.println(degreesC);
    Serial.print("  deg F: ");
    Serial.println(degreesF);
    delay(150);                              // Vent lidt :-)
}

float getVoltage(int pin)
{
    return (analogRead(pin) * 0.004882814);
}

 

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Sv: Hjælp med projekt.
« Svar #3 Dato: Februar 03, 2014, 18:49:45 »
Her er den sat sammen men virker ikke  :'(

Kode:
#include <Servo.h>


Servo myServo;                                                 // Servo motor 


int const potPin = A0;                                         // Analog pin hvor der er monteret et potmeter
int potVal;                                                    // Ud læs data fra analog porten 
int angle;                                                     // Hvor servo motoren skal stå 

const int temperaturePin = 1;

const int alarm = 8;

    void setup() 
    {
      myServo.attach(9);                                       // Det er til servomotoren på pin 9 
      Serial.begin(9600);                                      // Til serial komunitation
      pinMode (8,OUTPUT);                                      // Til busser
      
    }

void loop() 
    {
      {
      float voltage, degreesC, degreesF;
    voltage = getVoltage(temperaturePin);
    degreesC = (voltage - 0.5) * 100.0;
    degreesF = degreesC * (9.0/5.0) + 32.0;
  
  Serial.print("voltage: ");
  Serial.print(voltage);
  Serial.print("  deg C: ");
  Serial.println(degreesC);
  
  float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}
  
   delay(1000); // repeat once per second (change as you wish!)
}
        potVal = analogRead(potPin);                           // Læs potiometeret posion
       
                 
        angle = map(potVal, 0, 1023, 0, 200);                 // Nummert fra potionmeter

           
         Serial.print(" Km/t: ");                             //Vis hastigheden
        Serial.println(angle); 

            
        myServo.write(angle);
    
      if (angle >80)                                         // når hatsigheden kommer over 80
      {
      digitalWrite(8,HIGH);
     }
      else
     {
      digitalWrite(8,LOW);
      }
 
          
      delay(150);                                           // Delay på 150 milli sek
} 





 

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Sv: Hjælp med projekt.
« Svar #4 Dato: Februar 03, 2014, 19:03:39 »
Mange tak, det var to { jeg havde forkert.

 

Offline kjoller

  • U=I*R
  • ***
  • Indlæg: 45
  • Antal brugbare Indlæg: 8
    • Vis profil
    • The Electronic Map Room
Sv: Hjælp med projekt.
« Svar #5 Dato: Februar 03, 2014, 19:03:51 »
Det ser ud til at du forsøger at definere getVoltage-funktionen inden i loop'et. Jeg er ikke C-haj, så måske kan det give mening i visse sammenhænge (jeg tvivler). Men i dit tilfælde, skal den i hvert fald ud - så compiler det hos mig.

Du tager den her del
Kode:
  float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}

Og sætter den nederst, uden for loop-funktionen.

 

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Sv: Hjælp med projekt.
« Svar #6 Dato: Februar 03, 2014, 20:32:24 »
Jeg takker mange, men nu har jeg et nyt problem.
Skal have det ud på et lcd pisplay.
Kan skrive teksten "km/t" og "temp" med ikke data..

 

Offline Mikkel HH

  • Modstanden
  • **
  • Indlæg: 17
  • Antal brugbare Indlæg: 0
    • Vis profil
Sv: Hjælp med projekt.
« Svar #7 Dato: Februar 04, 2014, 12:37:33 »
Har fået det til at virke.  ;D