Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA


 Skupaj 200 rubljev za nakup dobro osnovo za enostavno opravilo. Projekt je bil zaključen s tujimi kolegi Adruino Arts. Za njegovo izvajanje mora poznati osnovne principe robotike, elektronike in razumeti, malo programiranja.
 V video posnetek avtor pripoveduje in kaže, da bi morali dobiti rezultat.
 Poleg svetilk moramo niz Grove - Toy Kit. Da spletu lahko shop po ceni 79,9 $.
 Glavna ideja - opredelitev statično ali dinamično stanje objekta z zaznavo gibanja. Če je odgovor pozitiven, potem teči eno od aktuatorjev in predvajate posneti sporočilo. V nasprotnem primeru aktivira 2. servo, in drugačen zvočni posnetek.
 Določitev gredo skozi neko obliko vhoda. Tako smo dobili rezultat v binarno kodo 0 ali 1.
 Snemalnik lahko predvajate zvočni posnetek le 4 preko zunanjega signala. Če želite posneti (vsak 15 sek.), Je treba preklopiti na gumb "play" v "rekordno". Po gumb Ponovno snemanje moral preklopiti. To je mogoče storiti s pomočjo kode (funkcija play ()). V servo kabla je 3 "plus", "minus" in digitalnih podatkov. Prvi 2 zagotoviti hrano za servo (max 7) in 3. povezuje digitalni izhod, ki prejme informacije o stanju stikalom in z oznako.
 Najprej razčleniti svetilko. Mi ne potrebujemo električne komponente, vendar je treba delati same temelje. Potrebovali boste tudi nekaj rekvizitov in podpornih elementov.
 Narediti luknjo v cevi povezati našo zasnovo.
 Prototip robota je pripravljen!

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

 Korak 1: Glow
 Uporaba LED svetilko IKEA OLEBY (Food sončni pogon).
 Stikalo deluje le v digitalno napravo, in zato odvisna od trenutne omrežju. Če preklopimo podsoedynym Plačajte Seeeduino, lahko nastavite digitalni izhod nizka, in potem ne bo tok. Ko dajanje visoka, se znova pojavi.
 Tudi v svetilko in se priključite upor za zaščito LED.
 Nastavitev svetlobe element v kovinsko podlago.

Nadgradili svetilka robot z IKEA

 Korak 2: Načelo
 Imamo žarnice priloženi servo nadzora detektorjem, trojno os accelerometer, snemalnik in igrajo 4 različne zvoke.
 Osnovni princip svetilke je, kot sledi:

 Izkazalo se je, da hrup (zvok)
 Svetilka vključena
 Deluje zapis №3
 Hand Lamp omogoča gibanje (levo-desno-levo)
 Servo ostaja pri 90 °
 Zaključena transakcija

 Če je hrup, potem:

 Svetilka vključena
 Servo z Lamp premakniti levo
 Deluje zapis №2
 Svetilka nazaj v položaju 90 °
 Zaključena transakcija

 Če metal roko doseže določeno (visoko) položaj, nato pa igral rekord №4.

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

Nadgradili svetilka robot z IKEA

 Korak 3: Izboljšanje
 Pri načrtovanju dela, lahko nekaj izboljšav vdelavo stikalo pristojbino Seeeduino, nadzorovati izvajanje kode z uporabo redni ciklus IF. Če je stikalo vklopljeno - začetek AUTO način, če ne - ročni način.
 Auto-mode vključuje standardno kodo, ko lučka se odziva na zvok.
 Ročni način omogoča daljinsko upravljanje s trojno os accelerometer, spreminja položaj osi X in Y.
 Lahko naredite zavoj luči na 360 °, tako da mu ločen servo. Ali lahko vzpostavi povezavo prek Wi-Fi / Ethernet.
 4. korak: Code
 Avtor koda (MrLdnr) lahko najdete spodaj.
 [Spojler]
 #include
 const int buttonPin = 4; // Položaj stikala
 int buttonState = 0; // Spremenljivka za branje gumbov položaja
 // Servo Setup
 Servo myservo2;
 Servo myservo; // Ustvarimo za nadzor servo
 int pos = 0; // Spremenljivka za shranjevanje servo položaj
 int pos2 = 0; // Spremenljivka za shranjevanje servo položaj
 int VAL1;
 int VAL2;
 // LED SETUP
 const int ledPin2 = 5; // Glavna luč
 const int ledPin = 12; // Tube svetlobe
 int countlamp2 = 0;
 // Noise Setup
 const int thresholdvalue = 300; // odziv na zvok
 // Set akseleometra
 int ystate;
 int xstate;
 #include
 #define MMA766ddr 0x4c
 #define MMA7660_X 0x00
 #define MMA7660_Y 0x01
 #define MMA7660_Z 0x02
 #define MMA7660_TILT 0x03
 #define MMA7660_SRST 0x04
 #define MMA7660_SPCNT 0x05
 #define MMA7660_INTSU 0x06
 #define MMA7660_MODE 0x07
 #define MMA7660_SR 0x08
 #define MMA7660_PDET 0x09
 #define MMA7660_PD 0x0A
 Razred Pospešek
 {
 javnosti:
 char x;
 char y;
 char z;
};

 char indeks;
 char nadzor;
 char stanje;
 int audiodelay = 1000;
 void mma7660_init (ničen)
 {
 Wire.begin ();
 Wire.beginTransmission (MMA766ddr);
 Wire.send (MMA7660_MODE);
 Wire.send (0x00);
 Wire.endTransmission ();
 Wire.beginTransmission (MMA766ddr);
 Wire.send (MMA7660_SR);
 Wire.send (0x07); // Vzorci / Drugi Active Mode in Auto-Sleep
 Wire.endTransmission ();
 Wire.beginTransmission (MMA766ddr);
 Wire.send (MMA7660_MODE);
 Wire.send (0x01); // aktiven način
 Wire.endTransmission ();
}

 void setup ()
 {
 mma7660_init (); // Pridružite I2C (naslov selektivno master naprave)
 Serial.begin (9600);
 // Predlog Sensor
 pinMode (6 INPUT); // uporablja 2 noge za zunanji signal
 // Lamp lahka in osnove svetlobe
 pinMode (ledPin, OUTPUT);
 pinMode (ledPin2 OUTPUT);
 // Servomehanizmi
 // AUDIO
 DDRD | = 0x0C; // D2 in D3 write v načinu;
 PORTD & = 0xF3; // D2 in D3 nastavljen na nizko;
 // Senzor Hrup na Analog 0
 // SWITCH
 pinMode (buttonPin, INPUT);
}
 void rec_2_begin ()
 {
 PORTD = (PORTD | 0b00000100) & 0b11110111;
}
 void rec_2_stop ()
 {
 PORTD & = 0xF3;
}
 nična play_2 ()
 {
 PORTD = (PORTD | 0b00000100) & 0b11110111;
 zamudo (audiodelay);
 PORTD & = 0xF3;
}
 ////////////////////////////////////////////////// ////////////////////
 ////////////////////////////////////////////////// /////
 // Funkcija za nadzor segment_3
 void rec_3_begin ()
 {
 PORTD = (PORTD | 0b00001000) & 0b11111011;
}
 void rec_3_stop ()
 {
 PORTD & = 0xF3;
}
 nična play_3 ()
 {
 PORTD = (PORTD | 0b00001000) & 0b11111011;
 zamudo (audiodelay);
 PORTD & = 0xF3;
}
 ////////////////////////////////////////////////// ///
 ////////////////////////////////////////////////
 // Funkcija za nadzor segment_4;
 void rec_4_begin ()
 {
 PORTD = PORTD | 0b00001100;
}
 void rec_4_stop ()
 {
 PORTD & = 0xF3;
}
 nična play_4 ()
 {
 PORTD = PORTD | 0b00001100;
 zamudo (audiodelay);
 PORTD & = 0xF3;
}
 //////////////////////

 void check_move ()
 {
 int SensorValue = digitalRead (6);
 če (SensorValue == 1)
 {
 // DigitalWrite (ledPin, HIGH);
 //Serial.println(sensorValue, DEC); // izhodni položaj signala na monitor.
 // Servo1 ();
}
 ostalo
 {
 // DigitalWrite (ledPin, LOW);
 //Serial.println(sensorValue, DEC); // izhodni položaj signala na monitor.
 // Servo2 ();
}
}
 void servo1_right ()
 {
 myservo.attach (9);
 za (pos = 90, pos = 90; re- = 1) // gre od 0 do 180 stopinj
 {
 myservo.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits 15 ms do servo zavzema stališče
} * /
}
 void servo1_left ()
 {
 myservo.attach (9);
 za (pos = 90, pos & gt; 1; pos - = 1) // gre od 0 do 180 stopinj
 {// Korakih po 1 stopinjo
 myservo.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
} / *
 play_2 ();
 zamudo (1000);
 za (pos = 1; pos90) {
 za (pos = posact; pos & gt; 90; pos - = 1) // vrne 90 stopinj
 {// Korakih po 1 stopinjo
 myservo.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
}
}
 else {
 za (pos = posact; pos 60, pos - = 1) // gre od 0 do 180 stopinj
 {// Korakih po 1 stopinjo
 myservo2.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
} / *
 play_2 ();
 zamudo (1000);
 za (pos = 1; pos90) {
 za (pos = posact; pos & gt; 90; pos - = 1) // vrne položaj 90 stopinj
 {// Korakih po 1 stopinjo
 myservo2.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
}
}
 else {
 za (pos = posact; pos<=90 ;="" pos="" +="1)" goes="" from="" 0="" degrees="" to="" 180="">
 {// Korakih po 1 stopinjo
 myservo2.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
}
}
}


 void servo1_no ()
 {
 myservo.attach (9);
 za (pos = 90, pos = 90; re- = 1) // gre 180-0 stopinj
 {
 myservo.write (pos); // Kaše servo položaj z variabilno "pos"
 zamik (10); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
}
}
 void servo2 ()
 {
 myservo2.attach (10);
 za (pos2 = 110; pos2< 140;="" pos2="" +="1)" ??="" 0="" ??="" 180="">
 {//
 myservo2.write (pos2); // Kaše servo položaj z variabilno "pos"
 zamik (15); // Waits za 15 ms, medtem ko je servo ne sprejme stališča
}
}

 izničijo servo1R ()
 {
 myservo.write (90);
 myservo.detach ();
}
 izničijo servo2R ()
 {
 myservo2.write (90);
 myservo2.detach ();
}
 void lampblink ()
 {
 // Int SensorValue = digitalRead (6);
 // Če (SensorValue = 1) {
 digitalWrite (ledPin, HIGH);
 // Delay (1);
 // DigitalWrite (ledPin, LOW);
 // Delay (1);
 //}
 // Else
 // DigitalWrite (ledPin, LOW);
}
 void lamptest ()
 {
 za (int i = 0; i<100;>
 {
 digitalWrite (12 HIGH);
 zamudo (50);
 digitalWrite (12 LOW);
 zamudo (50);
}
}
 void lampoff ()
 {
 // Delay (2000);
 digitalWrite (ledPin, LOW);
}
 // Akseleometr
 izničijo ECOM ()
 {
 unsigned char val [3];
 Število int = 0;
 Val [0] = Val [1] = Val [2] = 64;
 Wire.requestFrom (0x4c, 3); // Prosi 3 bajte iz naprave v slave načinu 0x4c
 while (Wire.available ())
 {
 če (štetje 63) // polnitve
 {
 Val [število] = Wire.receive ();
}
 štetje ++;
}
 // Pretvori signal 7 bitov 8 bitov
 Pospešek ret;
 ret.x = ((char) (val [0] 2)) / 4;
 ret.y = ((char) (val [1] 2)) / 4;
 ret.z = ((char) (val [2], 2)) / 4;
 ystate = ret.y;
 xstate = ret.x;
 Serial.print ("x =");
 Serial.println (ret.x, DEC); //
 Serial.print ("y =");
 Serial.println (ret.y, DEC); //
 Serial.print ("Z =");
 Serial.println (ret.z, DEC); //
}
 char branje = 0;

 void loop ()
 {
 ECOM (); // Preverite stanje pospeška
 digitalWrite (ledPin2HIGH);
 buttonState = digitalRead (buttonPin); // Položaj Reading stikalo
 če (buttonState == HIGH)
 {
 lampblink (); // LED zavijete na:
 myservo.attach (9);
 myservo2.attach (10);
 VAL1 = ystate;
 VAL1 = map (val130 -300.179);
 myservo2.write (VAL1);
 VAL2 = xstate;
 VAL2 = map (VAL2 -30.300 179);
 myservo.write (VAL2); // Nastavi servo položaj glede na ranzhyruemыm vrednosti
 če (ystate thresholdvalue)
 {
 Serial.println ("DA");
 // DigitalWrite (ledNoise, HIGH);
 play_4 ();
 // Lampoff ();
 lampblink ();
 servo1_no ();
 servo1_no ();
 servo1R ();
 zamudo (1000);
}
 ostalo
 {
 lampoff ();
}
 // Preverjanje gibanju
 int SensorValue = digitalRead (6); // Predlog Detector
 če (SensorValue == 1)
 {
 Serial.println ("Move");
 // Movestate = 1;
 lampblink ();
 // Servo2 ();
 servo2_right ();
 servo1_right ();
 play_2 ();
 zamudo (1000);
 servo2_return ();
 servo1_return ();
 servo1_left ();
 servo2_left ();
 play_2 ();
 zamudo (1000);
 servo2_return ();
 servo1_return ();
 // Delay (1000);
}
 ostalo
 {
 // DigitalWrite (ledNoise, LOW);
 // Servo2 ();
 servo1R ();
 servo2R ();
 lampoff ();
 // Play_2 ();
 // Movestate = 0;
}
}
}  




Яндекс.Метрика