mijn idee voor een project is om een afstand sensor op een servo te plaatsen. en zodra er iets te dicht in de buurt van de afstand sensor is( wat met analoog signiaal gaat) dat die dan de hoek van de servo berekend. iemand enig idee hoe dit in c te scripten?
alvast bedankt
Waarom wil je dit met C oplossen? Welke microcontroller wil je gebruiken? Kun je uittekenen wat je wilt, het is me niet precies duidelijk namelijk.
Met Arduino is het vrij simpel, met AVR-GCC kan het ook maar moet je ook zaken als data direction register en interrupts zetten. Als jee PIC gebruikt kan het natuurlijk ook.
http://www.arduino.cc/playground/Main/UltrasonicSensor
En daar zoeken op servo levert ook leuke resultaten op.
SparkyGSX
Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Dat lijkt me nogal simpel; laat de servo een positie innemen, doe een meting, stuur de servo naar de volgende positie, doe weer een meting, etc., en laat op die manier de servo heen en weer scannen. Het aantal stappen is natuurlijk afhankelijk van de gewenste nauwkeurigheid en sample rate, en van de openingshoek van de sensor.
ik gebruik de atmel328p. en die kan zover ik weet alleen maar c script aan.
het idee is heel simpel. een servo met een afstand sensor rond laten draaien. zodat je een soort wall-e hoofd krijgt.
ik wil hem dan op de grond laten richten. die afstand is rond de 18cm en krijg ik een voltage van 2,5volt.
zodra het voltage hoger word dan die 2,5 volt. wil ik berekend hebben in welke stand de servo zit, en men robot die kan op laten draaien.
zoals ik uit sparky zijn uitleg:
ik heb een servo die periodetijd heeft van 20ms
90 links een puls geeft van 0,7ms
neutraal een puls heeft van 1,5ms
90 rechts een puls heeft van 2,3ms
op de char afstandsensor1 laat ik het voltage van de sensor binnen komen.
zover ik het hier begrijp moet dit dus werken:
char afstandsensor1()
SERVO1 = 1;
delay_ms(0.7);
SERVO1 =0;
delay_ms(19.3);
if (afstandsensor1 > 2.5)
{
/* hier het script om de wielen aan te sturen*/
}
else
{
SERVO1 = 1;
delay_ms(1.5);
SERVO1 =0;
delay_ms(18.5);
}
if (afstandsensor1 > 2.5)
{
/* hier het script om de wielen aan te sturen*/
}
else
{
SERVO1 = 1;
delay_ms(2.3);
SERVO1 =0;
delay_ms(17.7);
if (afstandsensor1 > 2.5)
{
/* hier het script om de wielen aan te sturen*/
}
else
{
SERVO1 = 1;
delay_ms(1.5);
SERVO1 =0;
delay_ms(18.5);
}
if (afstandsensor1 > 2.5)
{
/* hier het script om de wielen aan te sturen*/
}
else
{
/* hier het script om deze loop te herhalen */
}