lainataanpa tätä, miten tuo homma tarkalleenottaen menee.. onko joku perehtynyt?
Olen käsittänyt että noparia ohjataan ihan samalla signaalilla kuin servojakin.
Servo testerillä saan pyörimään moottorin ihan oikein, samoin servo liikkuu laidasta laitaan ihan oikein.
arduinolla servo liikkuu ihan oikein laidasta laitaan mutta nopari ei kyllä resetoidu oikein,
"servo testeri" arduinon omalla servo kirjastolla spoilerin alla.
[spoiler]
#include <Servo.h>
Servo myservo;
int val = 90;
void setup() {
Serial.begin(9600);
myservo.attach(24);
}
void loop() {
if (Serial.available() > 0) {
val = 0;
while(Serial.available() > 0)
{
val *= 10;
val += (Serial.read() - '0');
delay(2);
}
if (val < 1)
val = 1;
if (val > 180)
val = 180;
Serial.print("Annettu aste-arvo:" );
Serial.println(val,DEC);
Serial.print("Servolle välitetty aste: ");
Serial.println(val,DEC);
Serial.print("Pulssinleveys: ");
Serial.println(pulseIn(24, LOW
));
}
myservo.write(val);
delay(100);
}[/spoiler]
Tuolla ohjelmalla saa ohjattua servoa asteluvulla haluttuun kohtaan ja sitten se näyttää pulssin leveyden myös.
asteella pulssin leveys on n.17470
180-astetta niin leveys on n.19300
Turnigyn servo testerillä samat lukemat
aste n.14400
180-astetta n.15400
Coronan 6ch syntikka PPM vastarilla
aste n.19900
180-astetta n. 20900
Eli kaikissa on noin 1000 väli, paitsi arduinon kirjastolla. Mitattu, ulostulo signaalin pinneistä..
Eli raa asti ylhäällä olo eli ohjaus pulssi olisi n.1000 mikrosekunttia.. arduinolla 2000.
Pulssit on selvitetty tällä softalla, löytyy taas spolerin alta
[spoiler]void setup()
{
Serial.begin(57600);
pinMode(22, INPUT);
}
void loop()
{
Serial.println(pulseIn(22, LOW));
}[/spoiler]
Tuolla vois hakea PPM signaalin vastarilta jos tarvitsee, löysin netin syövereistä tuon, tässä linkki
http://diydrones.com/profiles/blogs/705844:BlogPost:38393En ole näihin signaaleihin nyt perehtnyt sen kummin vielä. Kanavakohtaista dataahan nuo mitatut tietenkin on ei varsinaista PPM signaalia jota nyt en tarvitsekkaan.. mikrosekuntteja on mitatut arvot. nyt ohjelma aloittaa laskemisen siitä kun pinni menee alas(0) ja laskee kunnes se nousee taas ylös(1). Jos muuttaa niin että laskee nousevasta nousevaan niin arvot ovat "järkevämpiä" eli 300-2500 mikrosekunttia.
Eli LOW asetuksella mitataan alhaalla olevaa tasoa ja HIGH asetuksella ylhäällä olevia tasoja.. kuva selventämään: (lainattu edellämainitulta sivulta)
http://api.ning.com/files/WmjViE3faLYy73Ry7eTzn4XMryr8qlAMeb*edCbrzW1BVUPtR1iXBIGgsS93iG1x5roVRkAWHqg7V3FAhK*o8NYsajr5nW7G/RC_Receiver_Timing_Diagram1.jpgKaikki tämä sen takia että olisin halukas ohjelmoimaan noparia arduinolla, jos joku osaa hjelppiä tai tietää jo valmiin softan niin vinkkaa. Samalla ois kiva tietää miksei tuo noparin ohjaus onnistu samalla tavalla kun servokin pelaa.. ja miten servo toimii tuolla esim servo testerillä ja arduinolla vaikka pulssin leveys on kaksinkertainen. Voi olla että teen itsestäni hölmön mutta ei vaan nyt ymmärrä tätä?
Oma "pöytäkäytössä" oleva leikkikalu on Arduino MEGA 2560..