eXplorer, prima parte
Autor - sebathorus -14/06/2010-
Povestea robotului -= eXplorer=- a inceput in septembrie 2009 cand am descoperit Arduino. Datorita usurintei cu care se programeaza si a marii cantitati de informatii de pe internet, dezvoltarea a fost foarte rapida.
Prima varianta a avut drept sasiu o cutie goala de CD-uri. Propulsia era asigurata de 2 servouri standard modificate pentru rotatie continua la care am montat o pereche de roti de 45mm. Pentru modificarea servourilor am folosit tutorialul de aici – http://www.acroname.com/robotics/info/ideas/continuous/continuous.html
A treia roata, cea din spate se misca liber.
Apelarea rutinelor scrise in limbaj de asamblare
Autor - Razvan Ionescu -10/06/2010-
Din mai multe motive poate fi necesar sa folosim rutine scrise in limbaj de asamblare. De exemplu: lipsa spatiului, viteza, siguranta sau, pur si simplu, faptul ca dispunem deja de ele si nu vrem sa le rescriem
Exista doua feluri in care putem utiliza in sketch-urile Arduino limbajul de asamblare:
1. Inline, asa cum e documentat in AVR GCC Inline Assembler Cookbook, cu o sintaxa destul de complexa
sau
2. Incepand cu versiunea 0018 se pot utiliza programe scrise in intregime in assembler. Dupa cautari fara succes pe forumul Arduino si diverse incercari, am ajuns la urmatoarea varianta:
- in folderul libraries din kitul Arduino facem un nou folder, cu un nume gen “UtileASM”
- in acest folder facem un fisier header, gen “UtileASM.h”
extern "C" {
void Incrementeaza(void);
}
- tot in acest folder salvam fisierul cu programul in limbaj de asamblare, gen “UtileASM.S” (atentie la extensia care trebuie scrisa cu majuscula “.S” si nu “.s”)
#include "avr/io.h" .extern un_numar .global Incrementeaza Incrementeaza: push r16 lds r16, un_numar inc r16 sts un_numar, r16 pop r16 ret
- sketch-ul va contine ceva gen:
/*
Titlu: Demonstratie Arduino si Assembler
Autor: [iard]
Data: 2010-06-09
*/
#include "UtileASM.h"
volatile int un_numar; // variabila in RAM, nu intr-un registru
extern void Incrementeaza(void);
void setup() {
Serial.begin(9600);
}
void loop() {
un_numar = 7; // valoare initiala
Serial.print("Numarul initial = " );
Serial.println(un_numar);
Incrementeaza(); // apelul subrutinei assembler
Serial.print("Numarul incrementat = " );
Serial.println(un_numar);
delay(1000);
}
Controlul unui LED RGB cu Arduino
Autor - cristiionut -09/06/2010-
Ce este un LED RGB? Un LED RGB este un LED care are 3 culori:
- rosu
- albastru
- verde
si are 4 pini, dintre care unu mai lung(acela este pinul GND).
MiniEric – telecomandat
Autor - Ro-Bot-X -08/06/2010-
In articolul trecut am creat miscarile robotului controland servomotoarele de pe computer si facand o lista cu pozitiile necesare. Robotul trebuia sa fie legat prin cablul USB la computer. Tot chinuindu-ma cu miscarile astea, mi-a venit ideea de a gasi o alta metoda de a invata robotul miscari noi. Din proiecte mai vechi stiam ca se poate folosi o telecomanda IR universala (pentru televizoare, VCR, etc) pentru a “conduce” robotul inainte, inapoi, stanga, dreapta, stop. Dar cum ar fi sa pot misca fiecare servo in parte si sa ii memorez pozitia? Pai cred ca nu e prea greu. Mai intai ii transmit robotului ca urmeaza sa inregistreze o miscare noua. Apoi selectez primul servo care vreau sa il misc. Folosind tastele sageti, misc servomotolul in sus sau in jos (sau lateral, dupa cum e cazul), oprindu-ma cand am gasit pozitia potrivita. Apoi salvez pozitia, selectez al doilea servo, il pozitionez, salvez pozitia s.a.m.d. Cand am terminat miscarea, apas din nou butonul de salvare pentru a o scrie in EEPROM. Folosind acest program pot invata robotul orice miscare, oriunde. Interesant, nu?
Weather Clock
Autor - Viorel -07/06/2010-
Proiectul este bazat pe platforma Arduino, si consta intr-un Arduino Duemilanove cuplat cu un shield Ethernet, la care am adaugat un servo motor si un display numeric cu led-uri. Voi reveni intr-o serie de posturi ulterioare asupra modului de constructie.
Arduino – bootloader optimizat
Autor - Viorel -07/06/2010-
Iard are un articol foarte interesant pe blog-ul lui despre un bootloader optimizat pentru Arduino de numai 500 bytes, care astfel elibereaza 1.5 K de memorie. Pentru instalarea acestuia pe Arduino este nevoie de un programator ISP sau de inca o placa Arduino.
Detaliile complete in articolul lui iard.




