sobota, 23 lipca 2011

RGB z przyciskami

Kolejny projekt z żarówką RGB. Żeby go wykonać przyda 6 oporników (3 x 1k ohm i 3 x 10k ohm), trzy przyciski, żarówka RGB i kilka kabelków. Głównym problemem w projekcie są przyciski, po prostu nie trzymają się płytki montażowej. przez to nie do końca wszystko się styka... za pierwszym razem zestaw zadziałał od razu, przy drugim podejściu musiałem się nakombinować żeby przyciski działały. Podejrzewam że coś nie stykało... te przyciski non stop wylatują... może ktoś ma na nie jakiś pomysł. Tutorial znalazłem w sieci w kanale BRIKOGEEK na YouTube, więcej na ich stronie. Niestety bez schematu. projekt trzeba było odtworzyć z pliku wideo. Udało się :) zaczęło świecić, więc wydaje się, że chyba coś się nauczyłem ;). Poniżej kod do obsługi żarówki :)

int czerwony=3; 
int niebieski=5; 
int zielony=6; 
 
int wartoscczerwony=254; 
int wartosczielony=254; 
int wartoscniebieski=254; 
 
int przyciskwyboru = 8; 
int przyciskmniej = 9; 
int przyciskwiecej = 10; 
int wybranyled = 0; 
  
void setup()  
{  
  pinMode(przyciskwyboru, INPUT); 
  pinMode(przyciskmniej, INPUT); 
  pinMode(przyciskwiecej, INPUT); 
   
  analogWrite(czerwony, 255);   
}  
  
int pinLed = 0; 
  
void loop()  
{  
      
   int wartoscled = 0; 
 
   if (digitalRead(przyciskwyboru) == HIGH)  
   { 
      pinLed++;   
       
      if (pinLed > 2) { pinLed=0; } 
    
      analogWrite(czerwony, 0); 
      analogWrite(zielony, 0); 
      analogWrite(niebieski, 0);       
       
      while (digitalRead(przyciskwyboru) == HIGH) {  }             
      delay(10);
   } 
   
   if (digitalRead(przyciskwiecej) == HIGH)  
   {  
     if (pinLed == 0) { wartoscczerwony++; } 
     if (pinLed == 1) { wartosczielony++; } 
     if (pinLed == 2) { wartoscniebieski++; } 
      
     delay(5); 
    } 
     
   if (digitalRead(przyciskmniej) == HIGH)  
   {  
     if (pinLed == 0) { wartoscczerwony--; } 
     if (pinLed == 1) { wartosczielony--; } 
     if (pinLed == 2) { wartoscniebieski--; } 
      
     delay(5); 
    }         
     
    if (wartoscczerwony > 254) { wartoscczerwony=254; } 
    if (wartoscczerwony < 0) { wartoscczerwony=0; } 
     
    if (wartosczielony > 254) { wartosczielony=254; } 
    if (wartosczielony < 0) { wartosczielony=0; } 
 
    if (wartoscniebieski > 254) { wartoscniebieski=254; } 
    if (wartoscniebieski < 0) { wartoscniebieski=0; }     
 
  if (pinLed == 0) { analogWrite(czerwony, wartoscczerwony); } 
  if (pinLed == 1) { analogWrite(zielony, wartosczielony); } 
  if (pinLed == 2) { analogWrite(niebieski, wartoscniebieski); } 
  
}
 
...

czwartek, 14 lipca 2011

RGB przejście kolorów

Zabawa ledami mnie wciągnęła do końca... :) Podnieśmy poprzeczkę i podłączmy diodę RGB i pobawmy się trochę kolorami. Diodę RGB podłączamy jak na załączonych rysunkach. Dioda RGB ma 4 nóżki (czerwona, masa, zielona i niebieska) masa jest dłuższa niż pozostałe. Do kolorów podłączamy oporniki 220 OHM.

Poniżej kod sterujący diodą RGB. Żeby wzmocnić efekt świecenia diody można na nią założyć piłeczkę pingpongową. :) Jest na co popatrzeć.

int czerwony;
int zielony;
int niebieski;


void setup()
{
  czerwony = 255;
  zielony = 255;
  niebieski = 255;
}


void loop()
{
  zmiana_koloru(&czerwony,   1);
  zmiana_koloru(&zielony,    1);
  zmiana_koloru(&czerwony,   0);
  zmiana_koloru(&niebieski,  1);
  zmiana_koloru(&czerwony,   1);
  zmiana_koloru(&zielony,    0);
  zmiana_koloru(&czerwony,   0);
  zmiana_koloru(&niebieski,  0);
}


void zmiana_koloru(int* wartosc, int kolor)
{
  for (int i = 0; i < 255; i++)
  {
    if (kolor)
      (*wartosc)--;
    else
      (*wartosc)++;
     
    wyswietl();
    delay(10);
  }
}
void wyswietl()
{
  analogWrite(6 czerwony);
  analogWrite(5, zielony);
  analogWrite(3, niebieski);
}

piątek, 8 lipca 2011

LED - ZACIEMNIANIE

Kontynuujemy zabazę z LEDem podpiętym do PINu 11. Jest to wyjście cyfrowe, które umożliwi sterowanie zarówno włączeniem LEDu jak i jego jasnością.

int jasnosc = 0;
 int zaciemnienie = 1;

void setup()  {
   pinMode(11, OUTPUT);
 }

void loop()  {
   analogWrite(11, jasnosc);   
   jasnosc = jasnosc + zaciemnienie;
  if (jasnosc == 0 || jasnosc == 255) {
     zaciemnienie = -zaciemnienie ;
  }
   delay(30);                           
 }

int - definiujemy zmienne: jasność początkowa LEDu = 0 oraz miana z jaką chcemy zmieniać jasność w tym przypadku 5, możemy ją zmieniać dowolnie... Ściemnienie i rozjaśnianie będzie szybsze lub wolniejsze. Wartość maksymalna 255.
if - funkcja jeżeli... (jasność =0 lub 255) to zmień wartość zmiany na (+) lub (-) czyli będziemy raz obserwować wzrost wartości od 0 do 255 a jak osiągniemy tą wartość to zmieni się znak przy formule i zacznie odejmować.

Proste, nie?

LED - S.O.S.

Podpinamy LEDa np. do PINu 8, nadajmy wiadomość kodem morsa.

Najpierw definiujemy kropkę - void kropka() i kreskę - void - kreska(), określamy długości podświetlenia diody i jej wyłączenia. np. dla kropki 1/4 sekundy a dla kreski 1 sekunda.

Następnie układamy w pętli kolejność wyświetlania (3 kropki, 3 kreski, 3 kropki), po każdej serii 1/2 sekundy przerwy, na końcu 3 sekundy opóźnienia i od nowa.


void setup()
{
  pinMode(8, OUTPUT);
}

void loop()
{
  kropka(); kropka(); kropka();
  delay(500);
  kreska(); kreska(); kreska();
  delay(500);  
  kropka(); kropka(); kropka();
  delay(3000);
}

void kropka()
{
  digitalWrite(8, HIGH);
  delay(250);
  digitalWrite(8, LOW);
  delay(250);
}

void kreska()
{
  digitalWrite(8, HIGH);
  delay(1000);
  digitalWrite(8, LOW);
  delay(250);
}

Określanie własnych funkcji poza pętlą i odwoływanie się do nich przyda się z pewnością przy budowie robota. Jeżeli uda się określić różne funkcje przy różnych odczytach urządzeń pomiarowych to będzie można realizować różne czynności w zależności od zaistniałej sytuacji.

czwartek, 7 lipca 2011

LED-MIGANIE, pierwszys projekt

Zaraz jak przyjdzie płytka, ściągamy ostatnią wersję programu, służącego do komunikowania się komputera z urządzeniem, który znajduje się na stronie ARDUINO.CC . Jest on dostępny dla Windows, MAC OS, oraz Linuxa. Podłączamy płytkę kablem USB. Ja pracuję na Windowsie 7 64bit. Ściągnięty program rozpakowujemy i zamieszczamy tam gdzie chcemy, na pulpicie czy też na dysku zewnętrznym. Nie trzeba go instalować.

Wykrywa płytkę ale brak mu sterowników. Sterowniki znajdują się w pliku ściągniętym z sieci. U mnie Arduino zaintalowało się na COM3. Trzeba jeszcze wybrać z listy płytkę jeżeli nie została wykryta, no i port komunikacji... np. COM3. Wszytko opisane tutaj .

Dodatkowo możemy ściągnąć z sieci program Fritzing, który umożliwi nam zapisanie graficzne projektu, co w przyszłości pozwoli na jego łatwe odtworzenie. W tym programie przygotowałem większość grafik na tym blogu.

No i gotowe... możemy zainstalować na płytce pierwszy programik. Arduino posiada własny LED oznaczony strzałką jest on podłączony do pinu 13 i ma własny opornik. Przynajmniej tak jest w opisach urządzenia. Możemy ożywić tego LEDa i zacząć nim błyskać. W tym celu do programu komunikacyjnego trzeba wpisać poniższy skrypt:

void setup() {              
  pinMode(13, OUTPUT);   // informujemy płytke ze pod pinem 

                         // 13 bedzie wyjscie sygnalu
                         // w tym przypadku LED
}

void
loop() {
  digitalWrite(13, HIGH);   // wlacza LEDa
  delay(1000);              // czeka sekunde
  digitalWrite(13, LOW);    // wylacza LEDa
  delay(1000);              // czeka sekunde
}
Program znajduje się również w oprogramowaniu ARDURINO w przykładach.

I tu można się trochę pobawić zmieniając czas oczekiwania.


viod setup () - informujemy Arduino co gdzie may podłączone
void loop () - miejsce gdzie wpisujemy komendy, które będą powtarzane w pętli.
pinMode () - określamy funkcję pinu czy ma on wysyłać dane czy je odbierać (OUPUT / IMPUT)
// - komentaż... którego program nie widzi.
delay() - opóźnienie, w którym jest lub nie jest realizowana jakaś czynność 1 sek = 1000
digitalWrite() - odnosi się do podłączeń cyfrowych.

Do PINu 13 możemy również podłączyć zewnętrznego LEDa, bez opornika, gdyż ponoć on tam jest. Nie mniej jednak w przykładach na stronie ARDUINO.CC\BLINK opornik jest załączony.



Do każdego innego PINu podłączamy żaróweczkę LED z opornikiem 220 OHM:



środa, 6 lipca 2011

Od czego zacząłem?


NETTIGO.PL. Zawiera on większość podstawowych elementów żeby móc zacząć zabawę z tym urządzeniem. Jednego co mi na dzień dzisiejszy brakuje w tym zestawie to potencjometr. Pojawia się on w kilku projektach więc warto go mieć. Przypominam że jestem laikiem w te klocki więc wyzwanie będzie większe :)
Na początek kupiłem zestaw "startowy" ARDUINO w sklepie

niedziela, 3 lipca 2011

Co na początek?

Buszując w netcie znalazłem stronę Trobot.pl i od tego zaczęło się wszystko. Zaciekawiły mnie opisy robotów zbudowanych na bazie platformy Arduino. W pierwszych opisach wyglądało na coś prostego. System dla ludzi zaczynających przygodę z elektroniką oraz dla zaawansowanych w tematyce. Zaciekawiła mnie różnorodność czujników i możliwości, od zwykłych wykrywaczy przeszkód na podczerwień po żyroskopy i moduły GPS, nie wspominając o wyświetlaczach dotykowych LCD i wielu innych ciekawych akcesoriach.

Im więcej czytam o tej platformie tym ciekawsze rzeczy odkrywam. Aż dziw bierze, że wymyślili to włosi a tak mi podpadli w życiu... Czas pokaże do czego te ich wynalazki się w życiu przydadzą.

W trakcie zapoznawania się z tą "prostą technologią" pojawiają się coraz to nowe rzeczy... Dla mnie to co najmniej jak lot na Marsa