-
also folgenden Beitrag erstma vergessen (Zitat:ok das klappt schonmal aber wie bekomm ich das hin, das er sich andersherum dreht????)
so ich hab das so gemacht das weiße PWM kabel an die BackLED und an das rote-, so wie das schwarze Kabel hab ich ne eigene Batteriebox angeschlossen, mit ebenfalls 4,8V spannung.
-
Hallo,
um uns wieder zu syncronisieren solltest du jetzt mal dein aktuelles Programm zeigen und deine Frage verständlicher formulieren ;)
Hast du den Minuspol der Servobatteriebox auch mit dem - des asuro verbunden? Das ist zwingend nötig damit das Servo und das Signal vom asuro eine gemeinsame Basis (GND) haben.
Weil ich mir selbst nicht mehr ganz sicher war habe ich es jetzt mit meinem "asuro" getestet. Der besitzt allerdings keine BackLEDs, deshalb hängt das Servo am Tastenpin PC4:
Code:
#include "asuro.h"
#define impuls_on DDRC|=(1<<PC4); PORTC|=(1<<PC4) // Servo an Tasteneingang
#define impuls_off DDRC&=~(1<<PC4); PORTC&=~(1<<PC4)
int main (void)
{
unsigned char c;
Init();
StatusLED(GREEN); // ist nach Init() immer grün!
while(1)
{
StatusLED(RED);
for (c = 0; c < 50; c++)
{
impuls_on;
Sleep(20); // Impuls Wert ca. 18-54
impuls_off;
Sleep(255); // Pause
Sleep(255);
Sleep(210-20);
}
StatusLED(GREEN);
for (c = 0; c < 50; c++)
{
impuls_on;
Sleep(45);
impuls_off;
Sleep(255);
Sleep(255);
Sleep(255);
Sleep(210-45);
}
}
return 0;
}
Das Ergebniss sieht dann so aus:
Bild hier
http://www.youtube.com/watch?v=5fZTK4iMqeQ
Gruß
mic
-
Hi, habs jetzt geschaft
Code:
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
***************************************************************************/
#include "asuro.h"
int main (void)
{
Init();
StatusLED(GREEN);
while(1) {
if (PollSwitch()==1) {
BackLED (OFF,ON);
Sleep(18); // Impuls Wert ca. 18-54, Mitte ca.36
BackLED (OFF,OFF);
Sleep(255); // Pause Sleep(20*36-winkel)
Sleep(255);
Sleep(210-54);}
else if (PollSwitch()==4) {
BackLED (OFF,ON);
Sleep(54); // Impuls Wert ca. 18-54, Mitte ca.36
BackLED (OFF,OFF);
Sleep(255); // Pause Sleep(20*36-winkel)
Sleep(255);
Sleep(210-54);}
else if (PollSwitch()==8) {
BackLED (ON,OFF);
Sleep(18); // Impuls Wert ca. 18-54, Mitte ca.36
BackLED (OFF,OFF);
Sleep(255); // Pause Sleep(20*36-winkel)
Sleep(255);
Sleep(210-18);}
else if (PollSwitch()==32) {
BackLED (OFF,ON);
Sleep(54); // Impuls Wert ca. 18-54, Mitte ca.36
BackLED (ON,OFF);
Sleep(255); // Pause Sleep(20*36-winkel)
Sleep(255);
Sleep(210-54);}
else {BackLED(OFF,OFF);}
}
return 0;
}
mit dem oberen teil steuer ich den rechten servo in die eine oder andere Richtung mit dem unteren teil steuer ich den linken servo in die eine oder andere Richtung. Habe aber nochmal ne Frage: ist es normal das der servo nicht komplett bis zu anschlag dreht???
-
*mit dem oberen teil des code steuer ich den rechten servo in die eine oder andere Richtung mit dem unteren teil des code steuer ich den linken servo in die eine oder andere Richtung. Habe aber nochmal ne Frage: ist es normal das der servo nicht komplett bis zu anschlag dreht???
-
hallo, nochma die Frage:
mein asuro steuert den servo jetzt(Code oben), der servo nutzt aber nur einen teil, er dreht nich bis zum anschlag. Wie kann ich das verändern????
-
Etwas kurzeren puls bei völlig links bzw. längere puls bei völlig rechts. Die oben geben Sleep werten sind nicht sehr genau. Und es gibt immer bau-toleranzen.
-
wie viel kürzer?? statt 18 vlt. 9 oder so??
Kann man die Werte bestimmen???
-
Nein, bei den asurocd lib ist 18 das theoretische minimum. 36 die mittelwert, und 54 fur gegen die andere anschlag. Aber im praktische fall muss man vielleicht 16 oder 17 einstellen damit er gegen die anschlag steht. Und 55 oder 56, vielleicht ein bisshcen mehr. Einfach ausprobieren bis es passt. Du habst doch gemessen wieviel den lage fehlt? Dan proportionel anpassen.
-