Szervo kezelése

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
dutkair
Biztosítékgyilkos
Hozzászólások: 57
Csatlakozott: 2010. augusztus 29. vasárnap, 6:00

Hozzászólás Szerző: dutkair »

Az alábbi kóddal egy Rc szervó pozícionálását végzem, az egész gyönyörűen működik, viszonylag lassan lépteti, ahogy szeretném, viszont van egy dolog amit nem értek:

Ha a szervót lehúzom a tápról majd újra rákötöm, nem abban a pozícióban marad mint a mikor lehúztam, hanem visszaugrik a kiindulási pozícióba.

Ha viszont csak a szervó " signal" vezetékét kötöm le akkor visszadugás után ott marad ahol volt.

Ennek mi lehet az oka?

Kód: Egész kijelölése

$regfile = "attiny45.dat"
$crystal = 10000000


Config Servos = 1 , Servo1 = Portb.4 , Reload = 2
Config Portb.4 = Output
Config Portb.0 = Input
Config Portb.3 = Input
Enable Interrupts

Portb.3 = 1
Portb.0 = 1

Dim I As Single
Dim B As Single
I = 165

B = 0.05


Do



If Pinb.3 = 0 Then


   I = I + B
   Waitus 5
   End If

If Pinb.0 = 0 Then

   I = I - B
   Waitus 5
   End If

If I < 80 Then

   I = 80
   End If

If I > 250 Then

   I = 250
   End If


   Servo(1) = I


Loop
End
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ezt biztos nem a programod okozza!
Hanem a szervódban lehet valami reset áramkör. Ami bekapcsoláskor alaphelyzetbe állítja.
Látni kellene a szervód adatlapját!
8)
Avatar
dutkair
Biztosítékgyilkos
Hozzászólások: 57
Csatlakozott: 2010. augusztus 29. vasárnap, 6:00

Hozzászólás Szerző: dutkair »

Igen köszi már azóta megtanultam használni az eepromot, tehát azzal már ez is meg lett egyúttal oldva, most viszont egy olyan utasítás kellene hozzá, ami a gomb megnyomásakor csak egyszer menti az adatot az eepromba.

Amit én csináltam az ugyan működik de elég béna megoldás:

úgy működik, hogy amikor megnyomom a gombot akkor A nevű változó értékét folyamatosan növel 1-el, és amikor A=1 akkor menti az eepromba.
A baj ugye ezzel csak az, hogy amikor körbeér vagyis A ismét 1 akkor újra menti és ez nekem nem jó, de legalább a memória használata már megy, már csak annyi a megoldásra váró feladat, hogy csak akkor mentsen amikor a nyomógombot elengedem.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Erre már kaptál mintát a „Led kapcsolás” topikban!
Annyit kel változtatni, hogy az EEPROM írást átrakod a Case 1 : sorba.

Lehet kísérletezgetni számolással vagy Waitokkal! De mindegyik lefogja a programot és addig mást, nem tud csinálni.
:roll:
Válasz küldése