Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA


Tikai par 200 rubļiem var nopirkt nepieciešamo pamatu, lai vienkāršu robotu. Projekts izpildīts ārzemju kolēģiem ar Adruino Arts. Lai to īstenotu, ir nepieciešams zināt pamatprincipus robotika, izprast elektrotehnikas inženieru un mazliet programmēšanā.
Video rulli projekta autors stāsta un rāda, ko jums vajadzētu būt pie mums galā.
Bez pašas spuldzes mums ir nepieciešams noteikts Grove - Rotaļlietu Komplektu. Pasūtīt to var online veikalā par cenu 79.9$.
Galvenā ideja - definīcija statiskā vai dinamiskā objekta stāvoklis, pateicoties kustības detektora. Ja atbilde ir pozitīva, tad sākas viens no servo diskus un atskaņošanas iepriekš ierakstīto ziņojumu. Pretējā gadījumā, tiek aktivizēta 2. servo, un izklausās jau ir cits konts.
Pozicionēšana notiek pēc viena vai cita veida ievades signāla. Attiecīgi, rezultātā mēs iegūstam bināro kodu: 0 vai 1.
Diktofons var atskaņot tikai 4 ierakstīto skaņu, izmantojot ārējo signālu. Lai reģistrē (katra pa 15 sek.), nepieciešams pārslēgt ar pogu "play", "record". Pēc ierakstīšanas pogu vēlreiz vajadzētu pāriet. To var veikt, izmantojot programmas kods (funkcija play()). Pie servo diskus ir 3 kabeli: "plus" un "mīnus", un no digitālo datu. Pirmie 2 nodrošina pārtiku, lai servo (maksimāli 7), bet 3., kas savienots ar digitālo izeju, kur nonāk informācija par atrašanās vietu slēdzi arī ar koda palīdzību.
Vispirms veidojam lampu. Mums nav vajadzīgi, elektriskās sastāvdaļas, bet vajadzīga pati par sevi ir pamats, lai robots. Ir arī nepieciešams balsts un dažas atbalsta elementus.
Darām caurumu lampā, lai saistītu mūsu dizainu.
Robots prototips ir gatavs!

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Solis 1: Svelmes
Izmantojam led lampu IKEA OLEBY (barošana ar saules baterijām).
Slēdzis darbojas tikai kā digitālās ierīces, un, tātad, tas ir atkarīgs no strāvas tīkla. Ja mēs подсоединим slēdzis ar karti Seeeduino, tad var uzstādīt uz ciparu izejas LOW, un tad nav strāvas. Un, kad pakļaut HIGH, tad viņš atkal uzrodas.
Ir jau iekšā pašas lampas mēs подсоединяем kabeļi un rezistors, lai aizsargātu gaismas diodes.
Uzstādam gaismas elements metāla pamatu.

Modernizētais lampa-robots ir no IKEA

Solis 2: Princips
Mums ir lampa, buksēšanas servos, detektors kontroles, triple ass akselerometru, ierīce, kas ieraksta un atskaņošanas 4 dažādas skaņas.
Galvenais darba princips lampas ir šāds:

Izrādās troksnis (skaņa)
Lampa ieslēdzas
Sākas ieraksts # 3
Rokas lampas veic kustību (pa kreisi-pa labi-pa kreisi)
Servo paliek 90° leņķī
Pabeigta darbība

Ja tiek noteikta troksnis, tad:

Lampa ieslēdzas
Servo kopā ar lampu pārvietojas pa kreisi
Sākas ieraksts # 2
Lampa atgriežas nostāju 90° leņķī
Pabeigta darbība

Ja metāla roka sasniedz noteiktu (augsta) noteikumus, tad pašlaik skan ieraksts # 4.

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

Modernizētais lampa-robots ir no IKEA

3. Solis: Lai Uzlabotu
Konstrukcijā robots var veikt dažus uzlabojumus, piemēram, integrācija opcijas samaksu Seeeduino, lai kontrolētu koda izpildi, izmantojot parasto ciklu "IF". Ja slēdzis ir ieslēgts - lai palaistu auto režīms, ja nē - režīms ir iestatīts uz manual.
Auto režīms ietver standarta kods, kad lampa reaģē uz skaņu.
Manual režīms paredz attālā vadība, izmantojot triple ass akselerometru, mainot antenas pa asīm X un Y.
Var veikt pagrieziena lampas uz 360°, pievienojot tai atsevišķa servo. Vai var izveidot savienojumu, izmantojot Wi-Fi/Ethernet.
Solis 4: Kods
Autora kods (MrLdnr) var redzēt zemāk.
[spoiler]
#include
const int buttonPin = 4; //slēdzis stāvoklis
int buttonState = 0; //mainīgais, lai lasītu stāvokli pogas
//Servo Setup
Servo myservo2;
Servo myservo; //izveido servo lai kontrolētu
int pos = 0; //mainīgais, lai saglabātu pozīcijas servo
int pos2 = 0; //mainīgais, lai saglabātu pozīcijas servo
int val1;
int val2;
//LED SETUP
const int ledPin2=5;//Galveno gaismu
const int ledPin=12;//Lampu gaisma
int countlamp2 = 0;
//Noise Setup
const int thresholdvalue=300;//Reakcija uz skaņas
//Uzstādīšana акселеометра
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
class Acceleration
{
public:
char x;
char y;
char z;
};

char index;
char control;
char state;
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); //Samples/Second Active režīms Auto-Sleep
Wire.endTransmission();
Wire.beginTransmission( MMA766ddr);
Wire.send(MMA7660_MODE);
Wire.send(0x01);//active mode
Wire.endTransmission();
}

void setup()
{
mma7660_init(); //join i2c bus (selektīvā adresi, vednis devices)
Serial.begin(9600);
//Motion Sensor
pinMode(6 INPUT ();//Izmanto 2 kājiņas, lai iegūtu ārēju signālu
//Lamp light and base light
pinMode(ledPin, OUTPUT);
pinMode(ledPin2 OUTPUT);
//SERVOS
//AUDIO
DDRD |= 0x0C; //D2 un D3 write in mode;
PORTD &= 0xF3; //D2 un D3 set to low;
//Noise on sensor Analog 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;
delay(audiodelay);
PORTD &= 0xF3;
}
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
//function to control the segment_3
void rec_3_begin()
{
PORTD = (PORTD | 0b00001000)&0b11111011;
}
void rec_3_stop()
{
PORTD &= 0xF3;
}
void play_3()
{
PORTD = (PORTD | 0b00001000)&0b11111011;
delay(audiodelay);
PORTD &= 0xF3;
}
/////////////////////////////////////////////////////
////////////////////////////////////////////////
//function to control the segment_4;
void rec_4_begin()
{
PORTD = PORTD | 0b00001100;
}
void rec_4_stop()
{
PORTD &= 0xF3;
}
void play_4()
{
PORTD = PORTD | 0b00001100;
delay(audiodelay);
PORTD &= 0xF3;
}
//////////////////////

void check_move()
{
int sensorValue = digitalRead(6);
if(sensorValue==1)
{
//digitalWrite(ledPin, HIGH);
//Serial.println(sensorValue, DECEMBRIS);//Izejas pozīcijas signāla uz monitoru.
//servo1();
}
else
{
//digitalWrite(ledPin, LOW);
//Serial.println(sensorValue, DECEMBRIS);//Izejas pozīcijas signāla uz monitoru.
//servo2();
}
}
void servo1_right()
{
myservo.attach(9);
for(pos = 90; pos =90; pos=1) //ir no 0 līdz 180 grādiem
{
myservo.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}*/
}
void servo1_left()
{
myservo.attach(9);
for(pos = 90; pos > 1; pos= 1) //ir no 0 līdz 180 grādiem
{//ar soli 1 grādu
myservo.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}/*
play_2();
delay(1000);
for(pos = 1; pos90){
for(pos = posact; pos > 90; pos= 1) //atgriež līdz 90 grādiem
{//ar soli 1 grādu
myservo.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}
}
else {
for(pos = posact; 60 pos; pos= 1) //ir no 0 līdz 180 grādiem
{//ar soli 1 grādu
myservo2.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}/*
play_2();
delay(1000);
for(pos = 1; pos90){
for(pos = posact; pos > 90; pos= 1) //atgriež noteikumi 90 grādu
{//ar soli 1 grādu
myservo2.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}
}
else {
for(pos = posact; pos <=90 ;="" pos="" +="1)" goes="" from="" 0="" degrees="" to="" 180="">
{//ar soli 1 grādu
myservo2.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}
}
}


void servo1_no()
{
myservo.attach(9);
for(pos = 90; pos =90; pos=1) //ir no 180 līdz 0 grādiem
{
myservo.write(pos); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
kavēšanās(10); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}
}
void servo2()
{
myservo2.attach(10);
for(pos2 = 110; pos2 < 140;="" pos2="" +="1)" ="" 0="" ="" 180="">
{//
myservo2.write(pos2); //ziņo servo pozīciju, izmantojot mainīgo 'pos'
delay(15); //gaida 15 ms, kamēr servo nav nepieciešams pozīciju
}
}

void servo1R()
{
myservo.write(90);
myservo.detach();
}
void 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);
delay(50);
digitalWrite(12 LOW);
delay(50);
}
}
void lampoff()
{
//delay (2000);
digitalWrite (ledPin, LOW);
}
//акселеометр
void Ecom()
{
neparakstīts char val[3];
int skaits = 0;
val[0]= val[1]= val[2]= 64;
Wire.requestFrom(0x4c, 3); //pieprasa 3 bytes no ierīces slave režīmā 0x4c
while(Wire.pieejams())
{
if(count 63 ) //restartē
{
val[count]= Wire.receive();
}
skaits++;
}
//pārveido signālu no 7 bitu 8 biti
Acceleration 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, DECEMBRIS); //
Serial.print("y = ");
Serial.println(ret.y, DECEMBRIS); //
Serial.print("z = ");
Serial.println(ret.z, DECEMBRIS); //
}
char reading = 0;

void loop()
{
Ecom(); //stāvokļa pārbaude akselerometru
digitalWrite(ledPin2HIGH);
buttonState = digitalRead(buttonPin); //lasīt stāvokļa slēdzi
if (buttonState == HIGH)
{
lampblink();//turn LED on:
myservo.attach(9);
myservo2.attach(10);
val1 = ystate;
val1 = map(val130 -300179);
myservo2.write(val1);
val2 = xstate;
val2 = map(val2 -30300 179);
myservo.write(val2); //nosaka pozīciju servo saskaņā ar ранжируемым vērtību
if (ystate thresholdvalue)
{
Serial.println("YES");
//digitalWrite(ledNoise, HIGH);
play_4();
//lampoff();
lampblink();
servo1_no();
servo1_no();
servo1R();
delay(1000);
}
else
{
lampoff();
}
//checking for motion
int sensorValue = digitalRead(6); //kustības detektors
if(sensorValue==1)
{
Serial.println("Move");
//movestate =1;
lampblink();
//servo2();
servo2_right();
servo1_right();
play_2();
delay (1000);
servo2_return();
servo1_return();
servo1_left();
servo2_left();
play_2();
delay (1000);
servo2_return();
servo1_return();
//delay(1000);
}
else
{
//digitalWrite(ledNoise, LOW);
//servo2();
servo1R();
servo2R();
lampoff();
//play_2();
//movestate =0;
}
}
}