Fazendo uma Grua de Stop-Motion (com sucata) (6 / 6 steg)
Steg 6: O código-fonte
Ida/*
Denna exempelkod är offentlig.
*/
#define vänster 9 / / Passa o sinal para o L293D (esquerda)
#define höger 10 / / Passa o sinal para o L293D (direita)
#define echoPin 13 //Pino 13 recebe o pulso echo
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo
#define TEMPON 2
void setup() {
pinMode (vänster, OUTPUT);
pinMode (rätt, OUTPUT);
pinMode (echoPin, ingång); definiera o pino 13 como entrada (recebe)
pinMode (trigPin, produktionen); definiera o pino 12 como saida (envia)
Serial.BEGIN(9600);
lång v = lerDistancia();
Serial.println(v);
Mover(250);
v = lerDistancia();
Serial.println(v);
}
void mover (int pos) {/ / funça que movimento o carrinho
lång v = lerDistancia();
medan (v > 20000) {
v = lerDistancia();
}
int new_pos = pos - v;
Serial.println(new_pos);
om (new_pos < 0) {
Esquerda
Serial.println("left");
digitalWrite (vänster, hög);
äntligen = v;
While(true) {
långa vl = lerDistancia();
Serial.Print(":"); () Serial.Print
VL); Serial.PR
int("."); Serial.Print(VL-last);
om (vl < = pos & & vl < 20000) {
bryta;
}
senast = vl;
Delay(60);
}
digitalWrite (vänster, låg);
Serial.println(":");
} annat {
Direita
digitalWrite (rätt, hög);
Serial.println("Right");
äntligen = v;
While(true) {
långa vr = lerDistancia();
Serial.Print(":"); Serial.Print(VR); Serial.Print("."); Serial.Print (sista - vr);
om (vr > = pos & & vr < 20000) {
bryta;
}
senast = vr;
Delay(60);
}
Serial.println(":");
digitalWrite (rätt, låg);
}
}
lång lerDistancia() {
digitalWrite (trigPin, låg); Seta o pino de utlösa com um pulso baixo "LOW"
delayMicroseconds(15); fördröja de 15 microssegundos
digitalWrite (trigPin, hög); Seta o pino de utlösa com pulso alto "hög"
delayMicroseconds(10); fördröja de 10 microssegundos
digitalWrite (trigPin, låg); Seta o pino 12 com pulso baixo novamente
lång varaktighet = pulseIn(echoPin,HIGH); pulseInt lê o tempo entre en chamada e o pino entrar em hög
långa distancia = (längd * 337) / 2000; Dessa forma temos en nossa precisão em milimetros
Esse Cálculo é baseado em s = v. t, lembrando que o tempo vem dobrado
Porque é o tempo de ida e volta gör ultrassom
returnera distancia;
}
void lerDistancia (int tempo) {
int det = tempo / TEMPON;
för (int jag = 0; jag < det; i ++) {
lång t = lerDistancia();
Serial.Print("T:");
Serial.Print(t);
Delay(TEMPOS);
}
}
void loop() {
int röd = Serial.parseInt();
IF(Red) {
lång v = lerDistancia();
Serial.println(v);
Mover(Red);
v = lerDistancia();
Serial.println(v);
}
}