Pages: [1]   Go Down
Author Topic: en nybegynder der har lidt problemer.  (Read 845 times)
0 Members and 1 Guest are viewing this topic.
Denmark
Offline Offline
Newbie
*
Karma: 0
Posts: 5
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hey jeg har lige fået min arduino: uno samt lidt basis komponenter og begyndte på nogle tutorials. Nu er jeg så lige blevet færdig med mit føreste program men når jeg compiler det får jeg disse fejl koder:

[/code]servo_styring.cpp: In function 'void loop()':
servo_styring:18: error: 'write' was not declared in this scope
servo_styring:19: error: expected `;' before '{' token
servo_styring:25: error: expected `;' before '{' token

mit program er som følgende:

#include <Servo.h>
Servo myservo;
const int leftbotten = 2;
const int rightbotten = 3;
int leftbottenstate = 0;
int rightbottenstate = 0;
int servostate = 90;

void setup() {
  myservo.attach(9);
  pinMode(leftbotten, INPUT);
  pinMode(rightbotten, INPUT);
}

void loop() {
  leftbottenstate = digitalRead (leftbotten);
  rightbottenstate = digitalRead (rightbotten);
  if (leftbottenstate == HIGH);
  write(servostate -=1)
  {
    myservo.write(servostate);
  delay(15);
  }
  if (rightbottenstate == HIGH);
  write(servostate +=1)
  {
    myservo.write(servostate);
  delay(15);
  }
}

det er meningen at jeg vil have en servo motor til at starte på 90 grader og så alt efter om jeg trykker på right knappen eller left knappen så skal programmet lægge +1 eller -1 til de 90 grader sådan at motoren flytter sig en grad per tryk.

på forhånd tak.

ps. jeg er HELT ny og har ingen erfaring med at programere så hvis det er helt forkert så undskylder jeg smiley
Logged

Vejen, Denmark
Offline Offline
Edison Member
*
Karma: 7
Posts: 1178
RAWR! ^,..,^
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Det må være noget lignende dette du skal bruge så.

Code:
#include <Servo.h>
Servo myservo;
const int leftbotten = 2;
const int rightbotten = 3;
int leftbottenstate = 0;
int rightbottenstate = 0;
int servostate = 90;

void setup()
{
  myservo.attach(9);
  pinMode(leftbotten, INPUT);
  pinMode(rightbotten, INPUT);
}

void loop()
{
  leftbottenstate = digitalRead(leftbotten);
  rightbottenstate = digitalRead(rightbotten);
  
  if (leftbottenstate == HIGH)
  {
    servostate--;
    myservo.write(servostate);
    delay(15);
  }

  if (rightbottenstate == HIGH)
  {
    servostate++;
    myservo.write(servostate);
    delay(15);
  }
}

Du har lavet if(); og med ; bag ved betyder det at den bare stopper der, og vil udføre det der er imellem efterfølgende { } hver gang, uanset om den if returnerede sand eller falsk.
Logged

captain-slow.dk | non contagious!

Vejen, Denmark
Offline Offline
Edison Member
*
Karma: 7
Posts: 1178
RAWR! ^,..,^
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
#include <Servo.h>
Servo myservo;
const int leftbotten = 2;
const int rightbotten = 3;
int servostate = 90;

void setup()
{
  myservo.attach(9);
  pinMode(leftbotten, INPUT);
  pinMode(rightbotten, INPUT);
}

void loop()
{  
  if (digitalRead(leftbotten) == HIGH && servostate >= 0)
  {
    servostate--;
    myservo.write(servostate);
    delay(15);
  }

  if (digitalRead(rightbotten) == HIGH && servostate <= 180)
  {
    servostate++;
    myservo.write(servostate);
    delay(15);
  }
}
ville nok også kunne gøre det

dog vil denne kode også gøre sådan at den vil blive ved med at flytte den +/- 1 hvert 15 ms, da den ikke tjekker om knappen er blevet sluppet igen.

Har også tilføjet sådan så den ikke vil kunne køre ud over værdien som servoen faktisk kan, ellers kan du komme ud for at du får servostate op, eller ned, på en værdi lang fra det som servoen kan, og derved ikke vide hvor langt fra du faktisk er, og kan ikke få den til at bevæge sig før du igen er inde i den mulige range
« Last Edit: October 11, 2010, 01:57:27 pm by bld » Logged

captain-slow.dk | non contagious!

Pages: [1]   Go Up
Jump to: