Sai hiljuti AVRISP mkII programmaator soetatud ja peotäis ATmega8-16pu kivisi.
Ja tänaseks igasugu lihtsamad õpetused läbi käidud, kuidas LED-e vilgutada jne.
Ja paar asja päris ise oma peaga välja mõeldud.
Aga nüüd olen päris jännis kohe.
Nimelt, oleks vaja sellist enkooderit tööle saada kuidagi: http://www.ebay.com/itm/10pcs-New-12...item5d3c2e51d0
Olen paar päeva googeldanud ja mitmeid õpetusi lugenud aga mõistus peale ei hakka.
Ükski kood (mis õpetustes töötavad ilusti) minul tööle ei hakka.
Ilmselt on mul mingi elementaarne asi kahe silma vahele jäänud, mis on nii iseenesest mõistetav et õpetustes eraldi ei mainita.
Ainuke kood mis vähemalt mingeid elumärke annab on see:
Aga see ei ole ka päris õige asi sest, vahest töötab ja vahest ei tööta. Mõnikord võin lõputult nuppu kruttida ja mitte midagi ei muuta. Aga samas kohati jälle töötab.
Kellegil äkki mingit lihtsat koodi pakkuda, mis kindlalt töötab?
Või mingit head õpetust kus on puust ja punasest ette näidatud, nii et algaja ka tööle saaks asja?
Ja tänaseks igasugu lihtsamad õpetused läbi käidud, kuidas LED-e vilgutada jne.
Ja paar asja päris ise oma peaga välja mõeldud.
Aga nüüd olen päris jännis kohe.
Nimelt, oleks vaja sellist enkooderit tööle saada kuidagi: http://www.ebay.com/itm/10pcs-New-12...item5d3c2e51d0
Olen paar päeva googeldanud ja mitmeid õpetusi lugenud aga mõistus peale ei hakka.
Ükski kood (mis õpetustes töötavad ilusti) minul tööle ei hakka.
Ilmselt on mul mingi elementaarne asi kahe silma vahele jäänud, mis on nii iseenesest mõistetav et õpetustes eraldi ei mainita.
Ainuke kood mis vähemalt mingeid elumärke annab on see:
PHP kood:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#define PIN_A (PIND&1)
#define PIN_B ((PIND>>1)&1)
int main (void)
{
DDRD = 0;
DDRB |= _BV(DDB0);
uint8_t del = 200;
uint8_t dir = 0;
uint8_t counter = 0;
while(1)
{
if(dir == 0) {
if(PIN_A & (!PIN_B)) {
dir = 2;
} else if(PIN_B & (!PIN_A)) {
dir = 4;
} else {
dir = 0;
}
} else if(dir == 2) {
if(PIN_A & (!PIN_B)) {
dir = 2;
} else if((!PIN_A) & (!PIN_B)) {
counter-=10;
dir = 0;
} else {
dir = 0;
}
} else if(dir == 4) {
if(PIN_B & (!PIN_A)) {
dir = 4;
} else if((!PIN_A) & (!PIN_B)) {
counter+=10;
dir = 0;
} else {
dir = 0;
}
} else if(PIN_B & PIN_A) {
dir = 0;
}
del = counter;
PORTB ^= _BV(PB0);
_delay_ms(del);
}
return 0;
}
Kellegil äkki mingit lihtsat koodi pakkuda, mis kindlalt töötab?
Või mingit head õpetust kus on puust ja punasest ette näidatud, nii et algaja ka tööle saaks asja?
Comment