Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA


  Celkom 200 rubľov kúpiť dobrý základ pre jednoduchú prácu. Projekt bol dokončený so zahraničnými kolegami Adruino Arts. Pre jeho realizáciu, musí poznať základné princípy v oblasti robotiky, elektroniky a pochopiť trochu programovania.
  Vo video autor klipu rozpráva a ukazuje, že by sme sa mali dostať výsledok.
  Okrem svietidiel potrebujeme sadu Grove - Toy Kit. Objednajte on-line môžete nakupovať podľa ceny 79,9 $.
  Hlavnou myšlienkou - definícia statického alebo dynamického stavu objektu detekciou pohybu. Ak je odpoveď kladná, potom spustite jeden z pohonov a prehrávať vopred nahranú správu. V opačnom prípade, aktivovaný 2. servo, a iný zvukový záznam.
  Stanovenie prechádza nejakou formou vstupu. Preto sme si výsledok v binárnom kóde, 0 alebo 1.
  Recorder môžete prehrávať nahratý zvuk iba 4 pomocou externého signálu. Ak chcete nahrávať (každých 15 sec.), Je nutné zapnúť tlačidlo "Play» do «rekordný». Po tlačidla nahrávanie opäť by mal prejsť. To možno dosiahnuť prostredníctvom kódu (funkcie prehrávania ()). V serva kábel je 3 "plus", "mínus" a digitálne dáta. Prvé 2 poskytujú potravu pre servo (max 7) a 3. pripojí k digitálny výstup, ktorý dostane informácie o stave prepínače a kódom.
  Prvý analyzovaný lampu. Nepotrebujeme elektrických súčastí, ale je potrebné pracovať samotnú podstatu. Tiež je potrebné niektoré rekvizity a nosné prvky.
  Urobiť dieru v rúrke sa pripojiť náš dizajn.
  Prototyp robot je pripravený!

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

  Krok 1: Glow
  Použitie LED lampa IKEA OLEBY (Food na solárny pohon).
  Prepínač pracuje iba v digitálnej zariadení, a preto závisí na aktuálnej sieť. Ak prepnete podsoedynym Pay Seeeduino, môžete nastaviť digitálny výstup nízka, a potom tam bude aktuálna. Pri uvedení vysoká, objaví sa znovu.
  Aj v lampe a zapojíme rezistor na ochranu LED.
  Nastavte svetla prvok v kovovej bázy.

 Nadštandardné lampa robot s IKEA

  Krok 2: Princíp
  Máme lampy pripojené servo riadenie detektor, Triple Axis akcelerometer, prehrávač a hrať 4 rôzne zvuky.
  Základným princípom lampy je nasledujúci:

  Ukazuje sa, že hluk (zvuk)
  Vrátane zdroja
  Beží záznam №3
  Hand Lampa poskytuje pohyb (vľavo-vpravo-vľavo)
  Servo zostáva na 90 °
  Dokončené transakcie

  Ak je hluk, potom:

  Vrátane zdroja
  Servo s lampou pohybom vľavo
  Beží záznam №2
  Žiarovky späť na pozíciu 90 °
  Dokončené transakcie

  V prípade, že kovová ruka dosiahne určitú (vysoké) polohe, a potom hrať záznam №4.

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

 Nadštandardné lampa robot s IKEA

  Krok 3: Zlepšenie
  V projektovej práce môže urobiť nejaké zlepšenie, vkladanie prepínač poplatok Seeeduino, ovládanie spustenie kódu pomocou pravidelný cyklus IF. V prípade, že je zapnutý - štart v režime auto, ak nie - manuálnom režime.
  Auto-mode zahŕňa štandardný kód, keď lampa reaguje na zvuk.
  Manuálny režim umožňuje vzdialenú správu prostredníctvom Triple Axis akcelerometer, zmena polohy osi X a Y.
  Môžete si smeroviek na 360 ° C, čím sa jej samostatné servo. Môžete nastaviť som sa pripojiť cez Wi-Fi / Ethernet.
  Krok 4: Code
  Autor kód (MrLdnr) nájdete nižšie.
  [Spoiler]
  #include
  const int buttonPin = 4; // Polohový spínač
  int buttonState = 0; // Premenná pre čítanie polohy tlačidiel
  // Servo Nastavenie
  Servo myservo2;
  Servo myservo; // Vytvorí pre servoriadenie
  int pos = 0; // Premenná pre uloženie pozície serva
  int POS2 = 0; // Premenná pre uloženie pozície serva
  int VAL1;
  int val2;
  // LED SETUP
  const int ledPin2 = 5; // Hlavné svetlo
  const int ledPin = 12; // Tube light
  int countlamp2 = 0;
  // Nastavenie Noise
  const int thresholdvalue = 300; // reakcia na zvuk
  // Nastavenie 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
  trieda Zrýchlenie
  {
  public:
  char x;
  char y;
  char z;
};

  char index;
  char riadenia;
  char stav;
  int audiodelay = 1000;
  void mma7660_init (void)
  {
  Wire.begin ();
  Wire.beginTransmission (MMA766ddr);
  Wire.send (MMA7660_MODE);
  Wire.send (0x00);
  Wire.endTransmission ();
  Wire.beginTransmission (MMA766ddr);
  Wire.send (MMA7660_SR);
  Wire.send (0x07); // Vzorky / Second Active Mode a Auto-Sleep
  Wire.endTransmission ();
  Wire.beginTransmission (MMA766ddr);
  Wire.send (MMA7660_MODE);
  Wire.send (0x01); // aktívny režim
  Wire.endTransmission ();
}

  void setup ()
  {
  mma7660_init (); // Pridajte sa k zbernici I2C (adresa selective master zariadenia)
  Serial.begin (9600);
  // Motion Sensor
  pinMode (6 INPUT); // používa 2ft pre externý signál
  // Lampy svetlo a základné osvetlenie
  pinMode (ledPin, OUTPUT);
  pinMode (ledPin2 OUTPUT);
  // Servos
  // AUDIO
  DDRD | = 0x0C; // D2 a D3 zápisu do režimu;
  PORTD & = 0xF3; // D2 a D3 nastavená nízka;
  // Senzor Hluk na analógových 0
  // SWITCH
  pinMode (buttonPin, INPUT);
}
  void rec_2_begin ()
  {
  PORTD = (PORTD | 0b00000100) & 0b11110111;
}
  void rec_2_stop ()
  {
  PORTD & = 0xF3;
}
  void play_2 ()
  {
  PORTD = (PORTD | 0b00000100) & 0b11110111;
  Oneskorenie (audiodelay);
  PORTD & = 0xF3;
}
  ////////////////////////////////////////////////// ////////////////////
  ////////////////////////////////////////////////// /////
  // Funkcia pre ovládanie segment_3
  void rec_3_begin ()
  {
  PORTD = (PORTD | 0b00001000) & 0b11111011;
}
  void rec_3_stop ()
  {
  PORTD & = 0xF3;
}
  void play_3 ()
  {
  PORTD = (PORTD | 0b00001000) & 0b11111011;
  Oneskorenie (audiodelay);
  PORTD & = 0xF3;
}
  ////////////////////////////////////////////////// ///
  ////////////////////////////////////////////////
  // Funkcia pre ovládanie segment_4;
  void rec_4_begin ()
  {
  PORTD = PORTD | 0b00001100;
}
  void rec_4_stop ()
  {
  PORTD & = 0xF3;
}
  void play_4 ()
  {
  PORTD = PORTD | 0b00001100;
  Oneskorenie (audiodelay);
  PORTD & = 0xF3;
}
  //////////////////////

  void check_move ()
  {
  int sensorValue = digitalRead (6);
  ak (sensorValue == 1)
  {
  // DigitalWrite (ledPin, HIGH);
  //Serial.println(sensorValue, DEC); // výstupný signál polohy na monitore.
  // Servo1 ();
}
  inak
  {
  // DigitalWrite (ledPin, LOW);
  //Serial.println(sensorValue, DEC); // výstupný signál polohy na monitore.
  // Servo2 ();
}
}
  void servo1_right ()
  {
  myservo.attach (9);
  for (POS = 90, pos = 90; mož- = 1) // ide 0-180 stupňov
  {
  myservo.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká 15 ms až servo zastáva stanovisko,
} * /
}
  void servo1_left ()
  {
  myservo.attach (9);
  pre (poz = 90; pos & gt; 1, poz - = 1) // ide 0-180 stupňov
  {// Pričítá 1 stupeň
  myservo.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
} / *
  play_2 ();
  oneskorenie (1000);
  for (pos = 1; pos90) {
  pre (poz = posact; pos & gt; 90; POS - = 1) // vracia o 90 stupňov
  {// Pričítá 1 stupeň
  myservo.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
}
}
  else {
  pre (poz = posact; pol 60, poz - = 1) // ide 0-180 stupňov
  {// Pričítá 1 stupeň
  myservo2.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
} / *
  play_2 ();
  oneskorenie (1000);
  for (pos = 1; pos90) {
  pre (poz = posact; pos & gt; 90; POS - = 1) // vracia pozíciu 90 stupňov
  {// Pričítá 1 stupeň
  myservo2.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
}
}
  else {
  pre (poz = posact; pos <=90 ;="" pos="" +="1)" goes="" from="" 0="" degrees="" to="" 180="">
  {// Pričítá 1 stupeň
  myservo2.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
}
}
}


  void servo1_no ()
  {
  myservo.attach (9);
  for (POS = 90, pos = 90; mož- = 1) // ide 180-0 stupňov
  {
  myservo.write (POS); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (10); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
}
}
  void servo2 ()
  {
  myservo2.attach (10);
  pre (POS2 = 110; POS2 < 140;="" pos2="" +="1)" ??="" 0="" ??="" 180="">
  {//
  myservo2.write (POS2); // Hovorí polohu serv prostredníctvom premennej "POS"
  oneskorenie (15); // Čaká na 15 ms, zatiaľ čo servo nezaujíma stanovisko
}
}

  stratu servo1R ()
  {
  myservo.write (90);
  myservo.detach ();
}
  stratu servo2R ()
  {
  myservo2.write (90);
  myservo2.detach ();
}
  void lampblink ()
  {
  // Int sensorValue = digitalRead (6);
  // If (sensorValue 1 =) {
  digitalWrite (ledPin, HIGH);
  // Delay (1);
  // DigitalWrite (ledPin, LOW);
  // Delay (1);
  //}
  // Else
  // DigitalWrite (ledPin, LOW);
}
  void lamptest ()
  {
  for (int i = 0; i <100;>
  {
  digitalWrite (12 HIGH);
  oneskorenie (50);
  digitalWrite (12 LOW);
  oneskorenie (50);
}
}
  void lampoff ()
  {
  // Delay (2000);
  digitalWrite (ledPin, LOW);
}
  // Akseleometr
  stratu ECOM ()
  {
  unsigned char val [3];
  Počet int = 0;
  val [0] = val [1] = val [2] = 64;
  Wire.requestFrom (0x4c, 3); // Žiada 3 byty zo zariadenia Slave režimu 0x4c
  while (Wire.available ())
  {
  if (počet 63) // preloží
  {
  val [počet] = Wire.receive ();
}
  počet ++;
}
  // Prevádza signál 7 bitov 8 bitov
  Zrýchlenie 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 čítanie = 0;

  void loop ()
  {
  ECOM (); // Skontrolujte stav akcelerometra
  digitalWrite (ledPin2HIGH);
  buttonState = digitalRead (buttonPin); // Pozícia Reading vypínač
  if (buttonState == HIGH)
  {
  lampblink (); // poradie viedol na:
  myservo.attach (9);
  myservo2.attach (10);
  VAL1 = ystate;
  VAL1 = mapa (val130 -300.179);
  myservo2.write (VAL1);
  val2 = xstate;
  val2 = mapa (hodnota2 -30.300 179);
  myservo.write (hodnota2); // Nastaví polohu serv v závislosti na hodnote ranzhyruemыm
  if (ystate thresholdvalue)
  {
  Serial.println ("YES");
  // DigitalWrite (ledNoise, HIGH);
  play_4 ();
  // Lampoff ();
  lampblink ();
  servo1_no ();
  servo1_no ();
  servo1R ();
  oneskorenie (1000);
}
  inak
  {
  lampoff ();
}
  // Kontrola pohybu
  int sensorValue = digitalRead (6); // Detektor pohybu
  ak (sensorValue == 1)
  {
  Serial.println ("Move");
  // Movestate = 1;
  lampblink ();
  // Servo2 ();
  servo2_right ();
  servo1_right ();
  play_2 ();
  oneskorenie (1000);
  servo2_return ();
  servo1_return ();
  servo1_left ();
  servo2_left ();
  play_2 ();
  oneskorenie (1000);
  servo2_return ();
  servo1_return ();
  // Delay (1000);
}
  inak
  {
  // DigitalWrite (ledNoise, LOW);
  // Servo2 ();
  servo1R ();
  servo2R ();
  lampoff ();
  // Play_2 ();
  // Movestate = 0;
}
}
}  




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