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.

 

 



citeste mai departe

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);
}

citeste mai departe

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).


citeste mai departe

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?

citeste mai departe

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.


citeste mai departe

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.

citeste mai departe