Projekt przygotowany przez Bee Project (Thailand)
Aplikacja na androida
kod:
//przypisujemy piny do RGB
const int redPin = 6;
const int greenPin = 5;
const int bluePin = 3;
#define REDPIN 6
#define GREENPIN 5
#define BLUEPIN 3
#define FADESPEED 5
void setup() {
// initialize serial:
Serial.begin(9600);
// make the pins outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.print("Arduino control RGB LEDs Connected OK ( Sent From Arduinno Board )");
Serial.print('\n');
}
void loop() {
// if there's any serial available, read it:
while (Serial.available() > 0) {
// look for the next valid integer in the incoming serial stream:
int red = Serial.parseInt();
// do it again:
int green = Serial.parseInt();
// do it again:
int blue = Serial.parseInt();
// look for the newline. That's the end of your
// sentence:
if (Serial.read() == '\n') {
// constrain the values to 0 - 255 and invert
// if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
red = constrain(red, 0, 255);
green = constrain(green, 0, 255);
blue = constrain(blue, 0, 255);
// fade the red, green, and blue legs of the LED:
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
// print the three numbers in one string as hexadecimal:
Serial.print("Data Response : ");
Serial.print(red, HEX);
Serial.print(green, HEX);
Serial.println(blue, HEX);
}
}
}
W tym blogu można znaleźć kilka ciekawych... przynajmniej tak myślę projektów z wykorzystaniem ARDUINO. Wszystkie projekty są z pewnością zainspirowane znaleziskami w sieci, niemniej jednak są zrobione i sprawdzone.
Pokazywanie postów oznaczonych etykietą led. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą led. Pokaż wszystkie posty
piątek, 21 marca 2014
Zabawa RGB z telefonem w systemie android
robot, robotyka, arduino, projekty, budowa
android,
led,
projekt arduino,
rgb,
smarfon
niedziela, 2 marca 2014
Zabawa LEDami
Po wielu latach bezczynności udało się odpalić projekt Arduino ponownie... I trzeba się zacząć uczyć ponownie... To co mnie miło zaskoczyło to że jak tym razem zainstalowałem oprogramowanie Arduino to od razu wszystko zadziałało.
Któregoś dnia wykasowałem z googla+ przypadkowo wszystkie grafiki z bloga, przez co nie ma ich przy projektach... powoli je uzupełniam robiąc projekty na nowo. W końcu należy sobie wszystko przypomnieć.
W ramach przypomnienia zrobiłem sobie mały projekt z 10 LEDami i sobie le powłączałem i powyłączałem w różnych kombinacjach, poniżej kod... Zastanawiałem się czy nie można by go uprościć, np zrobić void on i off a potrm tylko on(1) zmienna z żarówką, którą chciałbym włączyć czy wyłączyć... może ktoś ma pomysł jak skrócić kod...
const int ledCount = 10;
int ledPins[] = { 4, 5, 6, 7, 8, 9,10,11,12,13 };
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop()
{
on1(); on2(); on3(); on4(); on5(); on6(); on7(); on8(); on9(); on10();
delay(500);
off1(); off2(); off3(); off4(); off5(); off6(); off7(); off8(); off9(); off10();
delay(500);
on1(); on2(); on3(); on4(); on5(); on6(); on7(); on8(); on9(); on10();
delay(500);
off1(); off2(); off3(); off4(); off5(); off6(); off7(); off8(); off9(); off10();
delay(1000);
on1(); delay(100); on2(); delay(100); on3(); delay(100); on4(); delay(100); on5(); delay(100); on6(); delay(100); on7(); delay(100); on8(); delay(100); on9(); delay(100); on10();delay(100);
off1(); delay(100); off2(); delay(100); off3(); delay(100); off4(); delay(100); off5(); delay(100); off6(); delay(100); off7(); delay(100); off8(); delay(100); off9(); delay(100); off10();
delay(100);
on1(); delay(100); on2(); delay(100); on3(); delay(100); on4(); delay(100); on5(); delay(100); on6(); delay(100); on7(); delay(100); on8(); delay(100); on9(); delay(100); on10();delay(100);
off1(); delay(100); off2(); delay(100); off3(); delay(100); off4(); delay(100); off5(); delay(100); off6(); delay(100); off7(); delay(100); off8(); delay(100); off9(); delay(100); off10();
delay(1000);
on1(); delay(100); off1(); on2(); delay(100); off2(); on3(); delay(100); off3(); on4(); delay(100); off4(); on5(); delay(100); off5(); on6(); delay(100); off6(); on7(); delay(100); off7(); on8(); delay(100); off8(); on9(); delay(100); off9(); on10(); delay(100); off10();
delay(100);
on10(); delay(100); off10(); on9(); delay(100); off9(); on8(); delay(100); off8(); on7(); delay(100); off7(); on6(); delay(100); off6(); on5(); delay(100); off5(); on4(); delay(100); off4(); on3(); delay(100); off3(); on2(); delay(100); off2(); on1(); delay(100); off1();
delay(100);
on1(); delay(100); off1(); on2(); delay(100); off2(); on3(); delay(100); off3(); on4(); delay(100); off4(); on5(); delay(100); off5(); on6(); delay(100); off6(); on7(); delay(100); off7(); on8(); delay(100); off8(); on9(); delay(100); off9(); on10(); delay(100); off10();
delay(100);
on10(); delay(100); off10(); on9(); delay(100); off9(); on8(); delay(100); off8(); on7(); delay(100); off7(); on6(); delay(100); off6(); on5(); delay(100); off5(); on4(); delay(100); off4(); on3(); delay(100); off3(); on2(); delay(100); off2(); on1(); delay(100); off1();
delay(1000);
on1(); on10(); delay(100); on2(); on9(); off1(); off10(); delay(100); on3(); on8(); off2(); off9(); delay(100); on4(); on7(); off3(); off8(); delay(100); on5(); on6(); off4(); off7(); delay(100); off5(); off6(); delay(100);on5(); on6(); delay(100); on4(); on7(); off5(); off6(); delay(100); on3(); on8(); off4(); off7(); delay(100); on2(); on9(); off3(); off8(); delay(100); on1(); on10(); off2(); off9(); delay(100); off1(); off10();
delay(100);
on1(); on10(); delay(100); on2(); on9(); off1(); off10(); delay(100); on3(); on8(); off2(); off9(); delay(100); on4(); on7(); off3(); off8(); delay(100); on5(); on6(); off4(); off7(); delay(100); off5(); off6(); delay(100);on5(); on6(); delay(100); on4(); on7(); off5(); off6(); delay(100); on3(); on8(); off4(); off7(); delay(100); on2(); on9(); off3(); off8(); delay(100); on1(); on10(); off2(); off9(); delay(100); off1(); off10();
delay(1000);
}
void on1(){ digitalWrite( 4, HIGH); }
void on2(){ digitalWrite( 5, HIGH); }
void on3(){ digitalWrite( 6, HIGH); }
void on4(){ digitalWrite( 7, HIGH); }
void on5(){ digitalWrite( 8, HIGH); }
void on6(){ digitalWrite( 9, HIGH); }
void on7(){ digitalWrite(10, HIGH); }
void on8(){ digitalWrite(11, HIGH); }
void on9(){ digitalWrite(12, HIGH); }
void on10(){ digitalWrite(13, HIGH); }
void off1(){ digitalWrite( 4, LOW); }
void off2(){ digitalWrite( 5, LOW); }
void off3(){ digitalWrite( 6, LOW); }
void off4(){ digitalWrite( 7, LOW); }
void off5(){ digitalWrite( 8, LOW); }
void off6(){ digitalWrite( 9, LOW); }
void off7(){ digitalWrite(10, LOW); }
void off8(){ digitalWrite(11, LOW); }
void off9(){ digitalWrite(12, LOW); }
void off10(){ digitalWrite(13, LOW); }
int ledPins[] = { 4, 5, 6, 7, 8, 9,10,11,12,13 };
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop()
{
on1(); on2(); on3(); on4(); on5(); on6(); on7(); on8(); on9(); on10();
delay(500);
off1(); off2(); off3(); off4(); off5(); off6(); off7(); off8(); off9(); off10();
delay(500);
on1(); on2(); on3(); on4(); on5(); on6(); on7(); on8(); on9(); on10();
delay(500);
off1(); off2(); off3(); off4(); off5(); off6(); off7(); off8(); off9(); off10();
delay(1000);
on1(); delay(100); on2(); delay(100); on3(); delay(100); on4(); delay(100); on5(); delay(100); on6(); delay(100); on7(); delay(100); on8(); delay(100); on9(); delay(100); on10();delay(100);
off1(); delay(100); off2(); delay(100); off3(); delay(100); off4(); delay(100); off5(); delay(100); off6(); delay(100); off7(); delay(100); off8(); delay(100); off9(); delay(100); off10();
delay(100);
on1(); delay(100); on2(); delay(100); on3(); delay(100); on4(); delay(100); on5(); delay(100); on6(); delay(100); on7(); delay(100); on8(); delay(100); on9(); delay(100); on10();delay(100);
off1(); delay(100); off2(); delay(100); off3(); delay(100); off4(); delay(100); off5(); delay(100); off6(); delay(100); off7(); delay(100); off8(); delay(100); off9(); delay(100); off10();
delay(1000);
on1(); delay(100); off1(); on2(); delay(100); off2(); on3(); delay(100); off3(); on4(); delay(100); off4(); on5(); delay(100); off5(); on6(); delay(100); off6(); on7(); delay(100); off7(); on8(); delay(100); off8(); on9(); delay(100); off9(); on10(); delay(100); off10();
delay(100);
on10(); delay(100); off10(); on9(); delay(100); off9(); on8(); delay(100); off8(); on7(); delay(100); off7(); on6(); delay(100); off6(); on5(); delay(100); off5(); on4(); delay(100); off4(); on3(); delay(100); off3(); on2(); delay(100); off2(); on1(); delay(100); off1();
delay(100);
on1(); delay(100); off1(); on2(); delay(100); off2(); on3(); delay(100); off3(); on4(); delay(100); off4(); on5(); delay(100); off5(); on6(); delay(100); off6(); on7(); delay(100); off7(); on8(); delay(100); off8(); on9(); delay(100); off9(); on10(); delay(100); off10();
delay(100);
on10(); delay(100); off10(); on9(); delay(100); off9(); on8(); delay(100); off8(); on7(); delay(100); off7(); on6(); delay(100); off6(); on5(); delay(100); off5(); on4(); delay(100); off4(); on3(); delay(100); off3(); on2(); delay(100); off2(); on1(); delay(100); off1();
delay(1000);
on1(); on10(); delay(100); on2(); on9(); off1(); off10(); delay(100); on3(); on8(); off2(); off9(); delay(100); on4(); on7(); off3(); off8(); delay(100); on5(); on6(); off4(); off7(); delay(100); off5(); off6(); delay(100);on5(); on6(); delay(100); on4(); on7(); off5(); off6(); delay(100); on3(); on8(); off4(); off7(); delay(100); on2(); on9(); off3(); off8(); delay(100); on1(); on10(); off2(); off9(); delay(100); off1(); off10();
delay(100);
on1(); on10(); delay(100); on2(); on9(); off1(); off10(); delay(100); on3(); on8(); off2(); off9(); delay(100); on4(); on7(); off3(); off8(); delay(100); on5(); on6(); off4(); off7(); delay(100); off5(); off6(); delay(100);on5(); on6(); delay(100); on4(); on7(); off5(); off6(); delay(100); on3(); on8(); off4(); off7(); delay(100); on2(); on9(); off3(); off8(); delay(100); on1(); on10(); off2(); off9(); delay(100); off1(); off10();
delay(1000);
}
void on1(){ digitalWrite( 4, HIGH); }
void on2(){ digitalWrite( 5, HIGH); }
void on3(){ digitalWrite( 6, HIGH); }
void on4(){ digitalWrite( 7, HIGH); }
void on5(){ digitalWrite( 8, HIGH); }
void on6(){ digitalWrite( 9, HIGH); }
void on7(){ digitalWrite(10, HIGH); }
void on8(){ digitalWrite(11, HIGH); }
void on9(){ digitalWrite(12, HIGH); }
void on10(){ digitalWrite(13, HIGH); }
void off1(){ digitalWrite( 4, LOW); }
void off2(){ digitalWrite( 5, LOW); }
void off3(){ digitalWrite( 6, LOW); }
void off4(){ digitalWrite( 7, LOW); }
void off5(){ digitalWrite( 8, LOW); }
void off6(){ digitalWrite( 9, LOW); }
void off7(){ digitalWrite(10, LOW); }
void off8(){ digitalWrite(11, LOW); }
void off9(){ digitalWrite(12, LOW); }
void off10(){ digitalWrite(13, LOW); }
robot, robotyka, arduino, projekty, budowa
10 led,
arduino,
led,
projekt arduino
czwartek, 18 sierpnia 2011
Czujnik światła z diodą LED - kalibracja czujnika
Na stronach ARDUINO.CC znalazłem prosty kod, w którym można przeprowadzić kalibrację czujnika światła. jest to całkiem fajna opcja gdyż przy testowaniu czujnika nie zawsze mamy dostateczną ilość światła... i wtedy nie widać dobrze zmian w oświetleniu LED. A jak się czujnik przystosuje do ilości światła w pomieszczeniu to i efekt jest bardziej widoczny... Kod przerobiłem... odwróciłem jego funkcję... kod ma za zadanie rozpalanie diody LED wtedy gdy robi się ciemno. Może to być ciekawa funkcja dla przyszłego robota... Kiedy ten zapędzi się w ciemne kąty to automatycznie włączy sobie oświetlenie, będzie łatwiej go znaleźć. Ciekawostką jest kalibracja czujnika światła, która została zamieszczona w void setup()
int wartoscczujnika = 0;
int czujnikmax = 1023;
int czujnikmin = 0;
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
while (millis() < 5000) {
wartoscczujnika = analogRead(A0);
if (wartoscczujnika > czujnikmin) {
czujnikmin = wartoscczujnika;}
if (wartoscczujnika < czujnikmax) {
czujnikmax = wartoscczujnika;}
}
digitalWrite(13, LOW);}
void loop() {
wartoscczujnika = analogRead(A0);
wartoscczujnika = map(wartoscczujnika, czujnikmin, czujnikmax, 0, 255);
wartoscczujnika = constrain(wartoscczujnika, 0, 255);
analogWrite(9, wartoscczujnika);}
Więcej ciekawych przykładów zastosowanie czujnika światła można znaleźć pd tym LINKIEM.
Poniższy kod nie kalibruje czujnika światła... testy należy przeprowadzać przy słonecznym dniu ;) ale za to dane z czujnika są wyświetlane w serial monitor
int czujnik = 0;
int odczytczujnika;
int jasnoscLED;
void setup(void) {
Serial.begin(9600);}
void loop(void) {
odczytczujnika = analogRead(czujnik);
Serial.print("Odczyt analogowy = ");
Serial.println(odczytczujnika);
odczytczujnika = 1023 - odczytczujnika;
jasnoscLED = map(odczytczujnika, 0, 1023, 0, 255);
analogWrite(9, jasnoscLED);
delay(100);}
int odczytczujnika;
int jasnoscLED;
void setup(void) {
Serial.begin(9600);}
void loop(void) {
odczytczujnika = analogRead(czujnik);
Serial.print("Odczyt analogowy = ");
Serial.println(odczytczujnika);
odczytczujnika = 1023 - odczytczujnika;
jasnoscLED = map(odczytczujnika, 0, 1023, 0, 255);
analogWrite(9, jasnoscLED);
delay(100);}
Poniżej kolejny kod do odczytu samego czujnika :) Podobnie jak z czujnikiem odległości wyświetlamy tym razem różne komentarze w serial monitor.
int czujnik = 0;
int odczytczujnika;
void setup(void) {
Serial.begin(9600);}
void loop(void) {
odczytczujnika = analogRead(czujnik);
Serial.print("Analog reading = ");
Serial.print(odczytczujnika);
if (odczytczujnika < 10) {
Serial.println(" - Ciemno");
} else if (odczytczujnika < 200) {
Serial.println(" - Raczej ciemno");
} else if (odczytczujnika < 500) {
Serial.println(" - Prawie jasno");
} else if (odczytczujnika < 800) {
Serial.println(" - Dosc jasno");
} else {
Serial.println(" - Bardzo jasno");
}
delay(1000);}
robot, robotyka, arduino, projekty, budowa
czujnik światła,
kalibracja,
led,
projekt arduino,
zaciemnianie
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 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?
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?
robot, robotyka, arduino, projekty, budowa
arduino,
led,
projekt arduino,
zaciemnianie
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.
robot, robotyka, arduino, projekty, budowa
arduino,
led,
projekt arduino,
s.o.s.
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
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
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:
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.
robot, robotyka, arduino, projekty, budowa
arduino,
led,
miganie,
projekt arduino
Subskrybuj:
Posty (Atom)






