Gegevens van input rechtstreeks naar output

Arduino specifieke Software
Berichten: 5
Geregistreerd: 30 Okt 2021, 16:06

Gegevens van input rechtstreeks naar output

Berichtdoor BarryVdW » 13 Nov 2021, 18:12

Beste,

Heeft er iemand de code voor hetgeen er op een input komt, rechtstreeks naar een output te sturen.
Hetgeen dus de arduino ontvangt van mijn RC ontvanger zou ik rechtstreeks op een output van de Arduino willen zetten, waar dan een servo op zit aangesloten.
Bijvoorbeeld input op pin 2 en output op pin 9.
Op de input komen waarde tussen 1000 en 2000 waarbij de 0 stand +/- 1500 bedraagt. De stick naar onder geeft waardes lager dan 1500 tot 1036, stick naar boven geeft waardes boven 1500 tot 1900
Wanneer de stick in middenstand staat moet servo ook in het midden staan, stick naar beneden, servo de ene kant uit, stick naar boven, servo de andere kant uit.

Onderstaande met andere inputs heb ik gevonden op het net maar is niet wat het moet zijn en werkt ook niet naar behoren.

#include <Servo.h> // for servo in example
Servo myservo; //servo entity
int pos = 0; //position for servo
int ch1; // Here's where we'll keep our channel values
int ch2;
int ch3;
void setup() { myservo.attach(9);
pinMode(5, INPUT); // Set our input pins as such
pinMode(6, INPUT);
pinMode(7, INPUT);
Serial.begin(9600); // Pour a bowl of Serial
}
void loop() {
ch1 = pulseIn(5, HIGH, 25000); // Read the pulse width of
ch2 = pulseIn(6, HIGH, 25000); // each channel
ch3 = pulseIn(7, HIGH, 25000);
Serial.print("Channel 1:"); // Print the value of
Serial.println(ch1); // each channel
Serial.print("Channel 2:");
Serial.println(ch2);
Serial.print("Channel 3:");
Serial.println(ch3);
if ((ch3 >= 1400) && (ch3 <= 1600)){// the center postion for controller
Serial.println("between");
pos = 90;//set servo to center
myservo.write(pos); // set to pos which is 90
}
else{
Serial.println("not between");
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(1); // waits 1ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(1); // waits 1ms for the servo to reach the position
}
}
delay(100); // I put this here just to make the terminal
}

Met vriendelijke groeten,
Barry

Advertisement

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Gegevens van input rechtstreeks naar output

Berichtdoor shooter » 14 Nov 2021, 15:52

Als het eerste gedeelte werkt dus zie je de drie kanalen op je monitor dan kun je die waarden met map omzetten naar 180 dus in de trant van map: set=map(ch1,1000,2000,0,180);
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 31 gasten