Design av Humanoid och Drone Hybrid för att neutralisera hot och övervakning (6 / 7 steg)
Steg 6: Kod för robot
Killarna här vi har använt flera Arduino UNO varje för olika delar för att arbeta av robot så vara alert medan du bränner koden in i den.
Höger och vänster hand styr sändarens kod:
int sen0 = A0;
int sen1 = A1;
int sen2 = A2;
int sen3 = A3;
int sen4 = A4;
int sen5 = A5;
void setup()
{
Serial.BEGIN(9600);
}
void loop()
{
int val0 = map(analogRead(sen0), 260, 450, 100, 210);
Serial.Print(val0);
int värde1 = map(analogRead(sen1), 260, 450, 100, 210);
Serial.Print(val1);
int värde2 = map(analogRead(sen2), 260, 450, 100, 210);
Serial.Print(val2);
int val3 = map(analogRead(sen3), 260, 450, 100, 210);
Serial.Print(val3);
int val4 = map(analogRead(sen4), 260, 450, 100, 210);
Serial.Print(val4);
int val5 = map(analogRead(sen5), 260, 450, 100, 210);
Serial.Print(val5);
Delay(50);
}
Finger kontroll genom flex sensor sändaren koden:
int sen0 = A0;
int sen1 = A1;
int sen2 = A2;
int sen3 = A3;
int sen4 = A4;
int sen5 = A5;
void setup()
{
Serial.BEGIN(9600);
}
void loop()
{
int val0 = map(analogRead(sen0), 580, 650,0, 9);
Serial.Print(val0);
int värde1 = map(analogRead(sen1), 580, 650, 0, 9);
Serial.Print(val1);
int värde2 = map(analogRead(sen2), 580, 650, 0, 9);
Serial.Print(val2);
int val3 = map(analogRead(sen3), 580, 650, 0, 9);
Serial.Print(val3);
int val4 = map(analogRead(sen4), 580, 650, 0, 9);
Serial.Print(val4);
int val5 = map(analogRead(sen5), 580, 650, 0, 9);
Serial.Print(val5);
Delay(50);
}
Finger kontroll genom flex sensor mottagare kod:
#include
int servo0Pin = 2;
int servo1Pin = 3;
int servo2Pin = 4;
int servo3Pin = 5;
int servo4Pin = 6;
int servo5Pin = 7.
int val0;
int värde1;
int värde2;
int val3;
int val4;
int val5;
Servo myservo0;
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
void setup()
{
Serial.BEGIN(9600);
myservo0.attach(servo0Pin);
myservo1.attach(servo1Pin);
myservo2.attach(servo2Pin);
myservo3.attach(servo3Pin);
myservo4.attach(servo4Pin);
myservo5.attach(servo5Pin);
}
void loop()
{
While(Serial.available() == 0);
byte en = Serial.read();
byte b = Serial.read(); Sholder vänster
byte c = Serial.read();
byte d = Serial.read();
byte e = Serial.read(); lbow vänster
byte f = Serial.read();
int g = map(a,0,9,0,180);
int h = map(a,0,9,0,180);
int jag = map(a,0,9,0,180);
int j = map(a,0,9,0,180);
int k = map(a,0,9,0,180);
int l = map(a,0,9,0,180);
myservo0.write(g);
myservo0.write(h);
myservo0.write(i);
myservo0.write(j);
myservo0.write(k);
myservo0.write(l);
Delay(50);
}
Höger och vänster hand kontroll mottagare kod:
#include
int ledPin = 13. Välj den PIN-kod för LED
int inPin = 12;
int valinPin = 0;
int servo0Pin = 2;
int servo1Pin = 3;
int servo2Pin = 4;
int servo3Pin = 5;
int servo4Pin = 6;
int servo5Pin = 7.
int servo6Pin = 8;
int servo7Pin = 9;
Servo myservo0;
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
Servo myservo6;
Servo myservo7;
int val0;
int värde1;
int värde2;
int val3;
int val4;
int val5;
int för beräkning av vinklar
int d, i, n, s, o, t;
void setup()
{
setpin läge att förstå driftsform
pinMode (ledPin, produktionen); deklarera LED som utdata
pinMode (inPin, ingång); deklarera tryckknapp som indata
Serial.BEGIN(9600);
fästa servon
myservo0.attach(servo0Pin);
myservo1.attach(servo1Pin);
myservo2.attach(servo2Pin);
myservo3.attach(servo3Pin);
myservo4.attach(servo4Pin);
myservo5.attach(servo5Pin);
myservo6.attach(servo6Pin);
myservo7.attach(servo7Pin);
}
att minska spike effekt
int dlast, nlast, ilast, slast, olast, tlast;
void loop()
{
valinPin = digitalRead(inPin); Läs indatavärde
om (valinPin == hög) {/ / kolla om ingången är hög (knappen släppt)
digitalWrite (ledPin, hög); slå LED
While(Serial.available() == 0);
int data = Serial.read() - '0';
byte en = Serial.read();
byte b = Serial.read(); Sholder vänster
byte c = Serial.read();
byte f = Serial.read();
byte g = Serial.read(); lbow vänster
byte h = Serial.read();
byte k = Serial.read();
byte l = Serial.read(); W kvar spelomgång
byte m = Serial.read();
byte p = Serial.read();
byte q = Serial.read(); W lämnade upp ner
byte r = Serial.read();
extra för sex sensorer
byte u = Serial.read();
byte v = Serial.read(); Huvudet runda
byte w = Serial.read();
byte x = Serial.read();
byte y = Serial.read(); Huvudet upp ner
byte z = Serial.read();
d = (c-48) + (b-48) * 10 + (a-48) * 100;
d = karta (d, 210, 20, 100, 130);
d = begränsa (d, 20, 130);
Jag = (h-48) + (g-48) * 10 + (f-48) * 100;
Jag = karta (i, 210, 20, 100, 130);
jag = begränsa (i, 20, 130);
n = (m-48) + (l-48) * 10 + (k-48) * 100;
n = karta (n, 210, 20, 100, 130);
n = begränsa (n, 20, 130);
s = (r-48) + (q-48) * 10 + (p-48) * 100;
s = karta (s, 210, 20, 100, 130);
s = begränsa (s, 20, 130);
extra för sex sensorer
int o = (w-48) + (v-48) * 10 + (u-48) * 100;
o = karta (o, 210, 20, 100, 130);
o = begränsa (o, 20, 130);
int t = (z-48) + (y-48) * 10 + (x-48) * 100;
t = karta (t, 210, 20, 100, 130);
t = begränsa (t, 20, 130);
Servo 1
om (d < 130 & & d > 20)
{
om (dlast-d < = 20)
{
myservo0.write(d);
int e = 150 - d;
myservo1.write(e);
Serial.Print(d);
Serial.Print ("\t");
}
}
Servo 2
om (jag < 130 & & jag > 20)
{
om (ilast-i < = 20)
{
myservo2.write(i);
int j = 150 - i.
myservo3.write(j);
Serial.Print(i);
Serial.Print ("\t");
}
}
Servo 3
om (n < 130 & & n > 20)
{
om (nlast-n < = 20)
{
myservo4.write(n);
Serial.Print(n);
Serial.Print ("\t");
}
}
Servo 4
om (s < 130 & & s > 20)
{
om (slast-s < = 20)
{
myservo5.write(s);
Serial.Print(s);
Serial.Print ("\t");
}
}
Servo 5
om (o < 130 & & o > 20)
{
om (olast-o < = 20)
{
myservo5.write(o);
Serial.Print(o);
Serial.Print ("\t");
}
}
Servo 6
om (t < 130 & & t > 20)
{
om (tlast-t < = 20)
{
myservo5.write(t);
Serial.Print(t);
}
}
Serial.println();
Serial.flush();
int d = (int) a;
int e = (int) b;
int f = c (int);
DLast = d;
ilast = i.
nlast = n;
slast = s;
olast = o;
tlast = t;
Delay(40);
}
annat
{
digitalWrite (ledPin, låg); Inaktivera LED
int left0 = 90.
myservo0.write(left0);
Serial.println(left0);
int left1 = 90.
myservo1.write(left1);
Serial.println(left1);
int left2 = 90.
myservo2.write(left2);
Serial.println(left2);
int left3 = 90.
myservo3.write(left3);
Serial.println(left3);
int left4 = 90.
myservo4.write(left4);
Serial.println(left4);
int left5 = 90.
myservo5.write(left5);
Serial.println(left5);
}
}
Drone rörlighet kontrollkod sändare:
#include
CONST byte rader = 4; fyra rader
CONST byte COLS = 4; fyra kolumner
char nycklar [rader] [COLS] = {
{"EN","B',"C"HADE"},
{"E", "F", "G", "H"},
{"I", "J", "K", "L"},
{ÄR "," N ","O","P"}
};
byte rowPins [rader] = {3, 2, 1, 0}; ansluta till rad Stifttilldelningar för knappsatsen
byte colPins [COLS] = {7, 6, 5, 4}; ansluta till kolumn Stifttilldelningar för knappsatsen
Tangentbordet knappsatsen = knappsatsen (makeKeymap(keys), rowPins, colPins, rader, kolumner);
int led0 = 8;
int led1 = 9.
int led2 = 10;
int led3 = 11;
void setup() {
Serial.BEGIN(9600);
pinMode (led0, produktionen);
pinMode (led1, produktionen);
pinMode (led2, produktionen);
pinMode (led3, produktionen);
}
void loop() {
char nyckel = keypad.getKey();
om (nyckel! = NO_KEY) {
Serial.println(Key);
Växla (nyckel) {
"A" i mål: / /
digitalWrite (led0, hög);
digitalWrite (led1, låg);
digitalWrite (led2, låg);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
"C" i mål: / /
digitalWrite (led0, låg);
digitalWrite (led1, hög);
digitalWrite (led2, låg);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
fall skulle ": / /
digitalWrite (led3, låg);
digitalWrite (led2, låg);
digitalWrite (led1, hög);
digitalWrite (led0, hög);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
ärende 'F': / /
digitalWrite (led0, låg);
digitalWrite (led1, låg);
digitalWrite (led2, hög);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
"H" i mål: / /
digitalWrite (led0, hög);
digitalWrite (led1, låg);
digitalWrite (led2, hög);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
fallet är ": / /
digitalWrite (led0, låg);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
fallet "o-: / /
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, låg);
Serial.println(Key);
Delay(2000);
digitalWrite (led0, hög);
digitalWrite (led1, hög);
digitalWrite (led2, hög);
digitalWrite (led3, hög);
bryta;
}
}
}
Drone rörlighet kontroll mottagare kod:
int b0;
int b1;
int b2;
int b3;
numrera av tryckknapp PIN-koden
CONST int mo0 = 6;
CONST int mo1 = 7.
CONST int mo2 = 8.
CONST int mo3 = 9.
CONST int mo4 = 10;
CONST int mo5 = 11;
CONST int vänster = 12.
CONST int höger = 13.
antal LED stift
variabler som ändras:
variabel för att läsa tryckknapp status
CONST int ledPin = A0;
void setup() {
initiera LED stift som en utgång:
pinMode (b0, ingång);
pinMode (b1, ingång);
pinMode (b2, ingång);
pinMode (b3, ingång);
pinMode (mo0, produktionen);
pinMode (mo1, produktionen);
pinMode (mo2, produktionen);
pinMode (mo3, produktionen);
pinMode (mo4, produktionen);
pinMode (mo5, produktionen);
pinMode (vänster, utdata).
pinMode (höger, OUTPUT);
pinMode (ledPin, produktionen);
Serial.BEGIN(9600);
initiera tryckknapp PIN-koden som indata:
}
void loop() {
Läs statligt av tryckknapp värdet:
B0 = digitalRead(2);
B1 = digitalRead(3);
B2 = digitalRead(4);
B3 = digitalRead(5);
Kontrollera om tryckknappen trycks.
om det är, är buttonState hög:
om (b0 == hög & & b1 == låg & & b2 == låg & & b3 == låg) {/ / INF
Aktivera LED:
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo4, hög);
digitalWrite (mo5, låg);
Serial.println ("motor doun");
Delay(16000);
digitalWrite (mo4, låg);
digitalWrite (mo5, låg);
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
Serial.println("Done");
}
annars om (b0 == låg & & b1 == hög & & b2 == låg & & b3 == låg) {/ / fwd
Aktivera LED:
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo0, hög);
digitalWrite (mo1, låg);
digitalWrite (mo3, hög);
digitalWrite (mo2, låg);
Serial.println("FWD");
}
annars om (b0 == hög & & b1 == hög & & b2 == låg & & b3 == låg) {/ /
Aktivera LED:
analogWrite (ledPin, hög);
Serial.println("Light");
}
annars om (b0 == låg & & b1 == låg & & b2 == hög & & b3 == låg) {/ / höger
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo0, hög);
digitalWrite (mo1, låg);
digitalWrite (mo2, hög);
digitalWrite (mo3, låg);
Serial.println("Right");
}
annars om (b0 == hög & & b1 == låg & & b2 == hög & & b3 == låg) {/ / vänster
Aktivera LED:
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo1, hög);
digitalWrite (mo0, låg);
digitalWrite (mo3, hög);
digitalWrite (mo2, låg);
Serial.println("left");
}
annars om (b0 == låg & & b1 == hög & & b2 == hög & & b3 == låg) {/ / HUM
Aktivera LED:
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo4, låg);
digitalWrite (mo5, hög);
Serial.println ("motor upp");
Delay(16000);
digitalWrite (mo4, låg);
digitalWrite (mo5, låg);
digitalWrite (vänster, hög).
digitalWrite (höger, hög);
Serial.println("Done"); }
annars om (b0 == hög & & b1 == hög & & b2 == hög & & b3 == låg) {/ / rygg
Aktivera LED:
digitalWrite (vänster, låg).
digitalWrite (höger, låg);
digitalWrite (mo1, hög);
digitalWrite (mo0, låg);
digitalWrite (mo2, hög);
digitalWrite (mo3, låg);
Serial.println("back");
}
annat {
Inaktivera LED:
digitalWrite (vänster, hög).
digitalWrite (höger, hög);
digitalWrite (mo0, låg);
digitalWrite (mo1, låg);
digitalWrite (mo3, låg);
digitalWrite (mo2, låg);
digitalWrite (mo4, låg);
digitalWrite (mo5, låg);
analogWrite (ledPin, låg);
Serial.println("stop");
}
}