Elektroda.pl
Elektroda.pl
X
BotlandBotland
Prosz, dodaj wyj徠ek dla www.elektroda.pl do Adblock.
Dzi瘯i temu, 瞠 ogl康asz reklamy, wspierasz portal i u篡tkownik闚.

Arduino Uno - jedna z nowszych p造tek z serii Arduino.

emer2 12 Pa 2010 10:16 15613 4
  • Arduino Uno - jedna z nowszych p造tek z serii Arduino.

    Arduino Uno to kolejna wersja platformy z serii Arduino. Jest to p造tka uruchomieniowa z mikrokontrolerem ATmega 328. Posiada ona 14 cyfrowych wej嗆/wyj嗆, z czego 6 mo瞠 zosta u篡te jako wyj軼ia PWM, 6 wej嗆 analogowych, a tak瞠 kwarc o cz瘰totliwo軼i 16MHz. Dodatkowo zamontowane zosta這 z陰cze USB, z陰cze zasilaj帷e, z陰cze ICSP, a tak瞠 przycisk RESET. P造tka ta zawiera wszystko co potrzebne do uruchomienia mikrokontrolera. Po陰czenie z komputerem odbywa si poprzez przew鏚 USB. Uk豉d zasili mo積a z u篡ciem zasilacza lub baterii.

    Arduino Uno r騜ni si od poprzednich wersji tym, 瞠 nie u篡wa FTDI USB. Chip ten zosta zast徙iony mikrokontrolerem ATmega8U2 zaprogramowanym jako konwerter USB. Oznaczenie "Uno" oznacza w j瞛yku w這skim "jeden" i oznacza nadchodz帷e Arduino 1.0. Arduino Uno i wersja 1.0 b璠 wersjami platform Arduino.

    Specyfikacja:
    Mikrokontroler ATmega328
    Napi璚ie zasilania 5V
    Napi璚ie wej軼iowe 7-12V
    Maks. napi璚ie wej軼iowe do 20V
    Cyfrowe linie I/O 14 ( w tym 6 PWM)
    Analogowe wej軼ia 6
    Pr康 dla linii I/O 40mA
    Pami耩 Flash 32kB
    SRAM 2kB
    EEPROM 1kB
    Cz瘰totliwo嗆 taktowania 16MHz

    P造tka Arduino Uno mo瞠 zosta zasilone ze z陰cza USB albo z zewn皻rznego zasilacza. 毒鏚這 jest wybierane automatycznie. Zewn皻rznym 廝鏚貫m zasilaj帷ym mo瞠 by tak瞠 bateria.

    P造tka Arduino Uno Deska mo瞠 pracowa przy zewn皻rznym napi璚iu od 6 do 20V. Je瞠li napi璚ie bd ni窺ze ni 7V to na wyj軼iach 5V mo瞠 pojawi si ni窺ze napi璚ie. Je瞠li napi璚ie przekroczy warto嗆 12V to regulator mo瞠 si grza lub zosta uszkodzony, dlatego zalecana jest praca przy napi璚iu od 7 do 12V.

    Poni瞠j schemat Arduino Uno pochodz帷y ze strony 廝鏚這wej:
    Arduino Uno - jedna z nowszych p造tek z serii Arduino.

    Link do strony 廝鏚這wej:
    Strona 廝鏚這wa

    Fajne! Ranking DIY
    Darmowe szkolenie: Ethernet w przemy郵e dzi i jutro. Zarejestruj siza darmo.
    O autorze
    emer2
    T逝macz Redaktor
    Offline 
    Specjalizuje siw: projektowanie i monta elektroniki
    emer2 napisa 434 post闚 o ocenie 50, pom鏬 0 razy. Mieszka w mie軼ie Warszawa. Jest z nami od 2008 roku.
  • BotlandBotland
  • #2
    luki964
    Poziom 9  
    Mam pytanie odno郾ie programowania...
    Nie ma dok豉dnej instrukcji komend po polsku i mia豚ym kilka pyta.
    Jestem uczniem gimnazjum i bior udzia w pewnym projekcie... Zaj璚ia odbywaj si raz w tygodniu i bierze w nich udzia 15 os鏏, wi璚 rzadko kiedy mam szanse porozmawia z instruktorem. No dobra wydaje mi si ze ogarano貫m podstawy obs逝gi wi璚 wzi掖em si za jaki bardziej skomplikowany program ni wy鈍ietlanie imienia i nazwiska na wy鈍ietlaczu lcd. Chcia豚ym zrobi co w stylu "elektronicznego pi鏎nika" w kt鏎ym na wy鈍ietlaczy zamontowanym z jednej strony wy鈍ietla豚ym godzin ,lekcje, 軼i庵i itp.
    Jednak ca豉 trudno嗆 polega na tym ze nie mog poradzi sobie z komend "if".
    Chce za pomoc przycisk闚 (button闚) sterowa kursorem i np. przesuwa poszczeg鏊ne cz窷ci MENU.
    Zaraz wyja郾i dok豉dnie, ale najpierw dodam 軼ie磬 programu.


    #include <LiquidCrystal.h>
    int buton1 = 4;
    int buton2 = 3;
    int dioda = 13;
    LiquidCrystal lcd(7,8,9,10,11,12);

    void setup()
    {
    pinMode(dioda,OUTPUT);
    digitalWrite(dioda,LOW);
    pinMode(buton1,INPUT);
    digitalWrite(buton1,HIGH);
    pinMode(buton2,INPUT);
    digitalWrite(buton2,HIGH);
    lcd.begin(16,2);
    }
    void loop()
    {
    lcd.blink();
    int x=0;
    int y=0;
    if(digitalRead(buton1)==LOW)
    {
    x++;
    }
    lcd.setCursor(x,0);
    }

    Chodzi o to 瞠 do x button dodaje liczb tylko podczas wci郾i璚ia, po puszczeniu x dalej r闚ne jest 0, a ja docelowa chcia豚ym doda jeden x co ka盥e wci郾i璚ie buttona.

    Z g鏎y dzi瘯uje za pomoc.
  • BotlandBotland
  • #3
    True_Brujah
    Poziom 12  
    Jak dla mnie to program powinien wygl康a tak:

    #include <LiquidCrystal.h>
    int buton1 = 4;
    int buton2 = 3;
    int dioda = 13;
    LiquidCrystal lcd(7,8,9,10,11,12);

    void setup()
    {
    pinMode(dioda,OUTPUT);
    digitalWrite(dioda,LOW);
    pinMode(buton1,INPUT);
    digitalWrite(buton1,HIGH);
    pinMode(buton2,INPUT);
    digitalWrite(buton2,HIGH);
    lcd.begin(16,2);
    }
    int x=0;
    int y=0;

    void loop()
    {
    lcd.blink();
    if(digitalRead(buton1)==LOW)
    {
    x++;
    }
    lcd.setCursor(x,0);
    }

    Je瞠li definiujesz zmienne w p皻li i podstawiasz "warto嗆" to za ka盥ym wykonaniem p皻li resetujesz zmienn do podanej warto軼i. W twoim przypadku "0".
  • #4
    kr0nos
    Poziom 9  
    Stare, ale mo瞠 komu si przyda.
    Po pierwsze, w celu niewielkiego (ale zawsze) oszcz璠zenia pami璚i, zamiast deklarowa zmienne:
    int buton1 = 4;
    int buton2 = 3;
    int dioda = 13;
    kt鏎e przecie w trakcie dzia豉nia nie b璠 zmieniane mo積a zrobi to tak:
    #define button1 4
    #define button2 3
    #define dioda 13
    w tym przypadku wi瘯szego zysku nie ma, ale mo瞠 warto sobie taki nawyk wyrobi (?).

    Po drugie mo積a u篡 s這wa kluczowego 'static' przy definiowaniu x oraz y. Spowoduje to, 瞠 przy kolejnych wykonaniach p皻li zmienne nie b璠 na nowo inicjowane (co mia這 miejsce w pierwszej wersji programu).
    Dodatkowo obs逝ga guzika te nie jest poprawna.
    Wychodzi na to, 瞠 za ka盥ym razem, kiedy wykona si p皻la, a guzik nie b璠zie wci郾i皻y do x dodane zostanie 1, wi璚 'pozycje w menu' b璠 przeskakiwa same.
    Wypada這by zastosowa dodatkow zmienn, kt鏎a b璠zie pami皻a poprzedni stan guzika i dopiero je瞠li jest LOW, a poprzedni by HIGH (przycisk na pewno daje stan LOW po jego naci郾i璚iu?) to dopiero x jest modyfikowane, ale skoro ta wersja dzia豉 jak powinna, to nie widz powodu, aby to zmienia :).

    Tak wi璚 program bym widzia tak:

    Kod: cpp
    Zaloguj si, aby zobaczy kod


    P.S. jak mo積a robi w kodzie wci璚ia??
  • #5
    Kamil071
    Poziom 2  
    luki964 napisa:
    Mam pytanie odno郾ie programowania...
    Nie ma dok豉dnej instrukcji komend po polsku i mia豚ym kilka pyta.
    Jestem uczniem gimnazjum i bior udzia w pewnym projekcie... Zaj璚ia odbywaj si raz w tygodniu i bierze w nich udzia 15 os鏏, wi璚 rzadko kiedy mam szanse porozmawia z instruktorem. No dobra wydaje mi si ze ogarano貫m podstawy obs逝gi wi璚 wzi掖em si za jaki bardziej skomplikowany program ni wy鈍ietlanie imienia i nazwiska na wy鈍ietlaczu lcd. Chcia豚ym zrobi co w stylu "elektronicznego pi鏎nika" w kt鏎ym na wy鈍ietlaczy zamontowanym z jednej strony wy鈍ietla豚ym godzin ,lekcje, 軼i庵i itp.
    Jednak ca豉 trudno嗆 polega na tym ze nie mog poradzi sobie z komend "if".
    Chce za pomoc przycisk闚 (button闚) sterowa kursorem i np. przesuwa poszczeg鏊ne cz窷ci MENU.
    Zaraz wyja郾i dok豉dnie, ale najpierw dodam 軼ie磬 programu.



    #include <LiquidCrystal.h>
    int buton1 = 4;
    int buton2 = 3;
    int dioda = 13;
    LiquidCrystal lcd(7,8,9,10,11,12);

    void setup()
    {
    pinMode(dioda,OUTPUT);
    digitalWrite(dioda,LOW);
    pinMode(buton1,INPUT);
    digitalWrite(buton1,HIGH);
    pinMode(buton2,INPUT);
    digitalWrite(buton2,HIGH);
    lcd.begin(16,2);
    }
    void loop()
    {
    lcd.blink();
    int x=0;
    int y=0;
    if(digitalRead(buton1)==LOW)
    {
    x++;
    }
    lcd.setCursor(x,0);
    }

    Chodzi o to 瞠 do x button dodaje liczb tylko podczas wci郾i璚ia, po puszczeniu x dalej r闚ne jest 0, a ja docelowa chcia豚ym doda jeden x co ka盥e wci郾i璚ie buttona.

    Z g鏎y dzi瘯uje za pomoc.




    Daj " int x=0;
    int y=0;" na sam pocz徠ek to powinno pom鏂

    Dodano po 0 [sekundy]:

    luki964 napisa:
    Mam pytanie odno郾ie programowania...
    Nie ma dok豉dnej instrukcji komend po polsku i mia豚ym kilka pyta.
    Jestem uczniem gimnazjum i bior udzia w pewnym projekcie... Zaj璚ia odbywaj si raz w tygodniu i bierze w nich udzia 15 os鏏, wi璚 rzadko kiedy mam szanse porozmawia z instruktorem. No dobra wydaje mi si ze ogarano貫m podstawy obs逝gi wi璚 wzi掖em si za jaki bardziej skomplikowany program ni wy鈍ietlanie imienia i nazwiska na wy鈍ietlaczu lcd. Chcia豚ym zrobi co w stylu "elektronicznego pi鏎nika" w kt鏎ym na wy鈍ietlaczy zamontowanym z jednej strony wy鈍ietla豚ym godzin ,lekcje, 軼i庵i itp.
    Jednak ca豉 trudno嗆 polega na tym ze nie mog poradzi sobie z komend "if".
    Chce za pomoc przycisk闚 (button闚) sterowa kursorem i np. przesuwa poszczeg鏊ne cz窷ci MENU.
    Zaraz wyja郾i dok豉dnie, ale najpierw dodam 軼ie磬 programu.



    #include <LiquidCrystal.h>
    int buton1 = 4;
    int buton2 = 3;
    int dioda = 13;
    LiquidCrystal lcd(7,8,9,10,11,12);

    void setup()
    {
    pinMode(dioda,OUTPUT);
    digitalWrite(dioda,LOW);
    pinMode(buton1,INPUT);
    digitalWrite(buton1,HIGH);
    pinMode(buton2,INPUT);
    digitalWrite(buton2,HIGH);
    lcd.begin(16,2);
    }
    void loop()
    {
    lcd.blink();
    int x=0;
    int y=0;
    if(digitalRead(buton1)==LOW)
    {
    x++;
    }
    lcd.setCursor(x,0);
    }

    Chodzi o to 瞠 do x button dodaje liczb tylko podczas wci郾i璚ia, po puszczeniu x dalej r闚ne jest 0, a ja docelowa chcia豚ym doda jeden x co ka盥e wci郾i璚ie buttona.

    Z g鏎y dzi瘯uje za pomoc.




    Daj " int x=0;
    int y=0;" na sam pocz徠ek to powinno pom鏂