Hei
Målet med prosjektet er å styre 5 servoer med informasjon fra serieporten på arduinoen. Verdiene som kommer inn på serieporten kommer fra en annen arduino som henter verdiene fra 5 potmeter og sender dem via seriekommunikasjon.
Problemet mitt er at hver gang jeg gir strøm til kretsen så havner verdiene fra arrayet på nye steder, det samme potmeteret kontrollerer da en annen servo for hver gang kretsen blir restartet.
kode master:
#define baudRate 57600
// Lillefinger [0]
#define lille_max 1023
#define lille_min 0
#define lille_servo_max 179
#define lille_servo_min 0
//Ringefinger [1]
#define ringe_max 1023
#define ringe_min 0
#define ringe_servo_max 179
#define ringe_servo_min 0
//langefinger [2]
#define lange_max 1023
#define lange_min 0
#define lange_servo_max 179
#define lange_servo_min 0
//pekefinger [3]
#define peke_max 1023
#define peke_min 0
#define peke_servo_max 179
#define peke_servo_min 0
//tommel [4]
#define tomm_max 1023
#define tomm_min 0
#define tomm_servo_max 179
#define tomm_servo_min 0
//Innganger arduino
#define lillefinger A0
#define ringefinger A1
#define langefinger A2
#define pekefinger A3
#define tommel A4
byte finger[5];
int i;
int temp;
void setup()
{
Serial.begin(baudRate);
pinMode(lillefinger,INPUT);
pinMode(ringefinger,INPUT);
pinMode(langefinger,INPUT);
pinMode(pekefinger,INPUT);
pinMode(tommel,INPUT);
}
void loop()
{
temp=analogRead(lillefinger); //Leser motstand lillefinger
finger[0]= map(temp,lille_max,lille_min,lille_servo_min,lille_servo_max ); // Stller "fingeren"
temp=analogRead(ringefinger);
finger[1]= map(temp,ringe_max,ringe_min,ringe_servo_min,ringe_servo_max ); // Ringefinger
temp=analogRead(langefinger); //Langefiner
finger[2]= map(temp,lange_max,lange_min,lange_servo_min,lange_servo_max );
temp=analogRead(pekefinger); //Pekerfinger
finger[3]= map(temp,peke_max,peke_min,peke_servo_min,peke_servo_max);
temp=analogRead(tommel); //Tommelfinger
finger[4]= map(temp,tomm_max,tomm_min,tomm_servo_min,tomm_servo_max);
Serial.write(finger,5);
}
kode slave:
#include<Servo.h>
#define baudRate 57600
Servo lille;
Servo ringe;
Servo lange;
int verdiInn[5];
int n;
void setup()
{
Serial.begin(baudRate);
lille.attach(3);
ringe.attach(5);
lange.attach(9);
}
void loop()
{
if(Serial.available()>4)
{
for(n=0;n<5;n++)
{
verdiInn[n]=Serial.read();
}
Serial.flush();
}
lille.write(verdiInn[0]);
ringe.write(verdiInn[1]);
lange.write(verdiInn[2]);
}
Hvis det er noen jeg kunne gjort bedre med kodingen så er det bare å si ifra, er litt n00b når det kommer til programmering.
Målet med prosjektet er å styre 5 servoer med informasjon fra serieporten på arduinoen. Verdiene som kommer inn på serieporten kommer fra en annen arduino som henter verdiene fra 5 potmeter og sender dem via seriekommunikasjon.
Problemet mitt er at hver gang jeg gir strøm til kretsen så havner verdiene fra arrayet på nye steder, det samme potmeteret kontrollerer da en annen servo for hver gang kretsen blir restartet.
kode master:
#define baudRate 57600
// Lillefinger [0]
#define lille_max 1023
#define lille_min 0
#define lille_servo_max 179
#define lille_servo_min 0
//Ringefinger [1]
#define ringe_max 1023
#define ringe_min 0
#define ringe_servo_max 179
#define ringe_servo_min 0
//langefinger [2]
#define lange_max 1023
#define lange_min 0
#define lange_servo_max 179
#define lange_servo_min 0
//pekefinger [3]
#define peke_max 1023
#define peke_min 0
#define peke_servo_max 179
#define peke_servo_min 0
//tommel [4]
#define tomm_max 1023
#define tomm_min 0
#define tomm_servo_max 179
#define tomm_servo_min 0
//Innganger arduino
#define lillefinger A0
#define ringefinger A1
#define langefinger A2
#define pekefinger A3
#define tommel A4
byte finger[5];
int i;
int temp;
void setup()
{
Serial.begin(baudRate);
pinMode(lillefinger,INPUT);
pinMode(ringefinger,INPUT);
pinMode(langefinger,INPUT);
pinMode(pekefinger,INPUT);
pinMode(tommel,INPUT);
}
void loop()
{
temp=analogRead(lillefinger); //Leser motstand lillefinger
finger[0]= map(temp,lille_max,lille_min,lille_servo_min,lille_servo_max ); // Stller "fingeren"
temp=analogRead(ringefinger);
finger[1]= map(temp,ringe_max,ringe_min,ringe_servo_min,ringe_servo_max ); // Ringefinger
temp=analogRead(langefinger); //Langefiner
finger[2]= map(temp,lange_max,lange_min,lange_servo_min,lange_servo_max );
temp=analogRead(pekefinger); //Pekerfinger
finger[3]= map(temp,peke_max,peke_min,peke_servo_min,peke_servo_max);
temp=analogRead(tommel); //Tommelfinger
finger[4]= map(temp,tomm_max,tomm_min,tomm_servo_min,tomm_servo_max);
Serial.write(finger,5);
}
kode slave:
#include<Servo.h>
#define baudRate 57600
Servo lille;
Servo ringe;
Servo lange;
int verdiInn[5];
int n;
void setup()
{
Serial.begin(baudRate);
lille.attach(3);
ringe.attach(5);
lange.attach(9);
}
void loop()
{
if(Serial.available()>4)
{
for(n=0;n<5;n++)
{
verdiInn[n]=Serial.read();
}
Serial.flush();
}
lille.write(verdiInn[0]);
ringe.write(verdiInn[1]);
lange.write(verdiInn[2]);
}
Hvis det er noen jeg kunne gjort bedre med kodingen så er det bare å si ifra, er litt n00b når det kommer til programmering.