Class aptent taciti sociosqu ad litora torquent per robot cum Arduino

Hic articulus est ad nos ire discite quomodo sit praestare robot blandit id sensu moderante Arduino parva tabula. Objectum per robot ultrasound soni erit impedimenta, si impedimentum sit spectare ad determinare utrimque permanere bene coepit.

Hardware

Hic focus in prima parte faciemus robot ad aedificationem plebis, et connectens partes in unum.

robot_arduino

necesse materiales

  • An tabulas Arduino
  • Etiam om duobus motoribus-ponte enim (in extendam manum meam doleat ex Arduino motricium scutum dfrobot)
  • Duae Bullae dis
  • DC duae motores (FIT0016 DFROBOT)
  • Duo 10k Ohm Ergo resistor lineatus
  • Encoders Duo (SEN0038 DFROBOT)
  • Duae rotae (FIT0003 DFROBOT)
  • A pila Aquarius servulus monstra (afferentem)
  • A servomotor
  • An ultrasonic propinquitas sensorem
  • Altilium unum 7,2v
  • Aluminium aedificare lignum neque illud suggestum,

C pontem,

C pontem,

Etiam om-ponte electronic est qui circuit ad DC concedit electrica motor CIRCUMAGO in utraque directiones.
Factum est ex IV nuptias instar stimuli est (per transistorum) et confiunt ex horum facit ut sit una salus haec est, ut ostensum est et in sequentibus imago.

Operatio C pontem,

Encoder:

encoder

An encoder installed is, qui est a sensorem in motricium scire de situ motricium, quod nobis concedit, ut motu control ejus.

Ultrasonic propinquitas sensorem:

ultrasonic sensorem

Mittit eo pulsus ultrasound soni sunt soni currentis redeat retro. Potest ex ratione longius tempus ultrasound semitam pulsu sonorum velocitate auras. Donius range est plerumque in 3cm IV metris.

constructione:

Next ego explicare ecclesiam de catasta ac nexum in diversas partes.
Aluminium exstrui potest ligno aluminium structura et integritate meliorem donat difficile processus. In hoc dedi eis illud meam doleat ex aluminium.

Omnes enim mensurae indicativum

Imo platform

platform robot mensuras superiores

In hac parte motorum et adferentem et proque domo longis, primum faciemus interficiam materiam et in qua mensura deberet supra, si autem est instrumentum ex ligno, V partibus et esse Conscidisti sociantes semetipsos fixuram clavorum, in alia manu, cum aluminium sunt et hoc triplici ductiles secari.

Postquam in superiori parte structuram habemus, nos EXERCITATIO foramina circiter III IV metrica illa ut postea possint adiungere parte inferiore parte, superius cum ANISOCYCLUM et nuces.

Ad quod portantes ponere possumus facere quod metrica illa XXX foraminis cum utrimque ad coronam et ancoram duo foramina in pila.

Tormentis murorum parte novissime ibit.

imo platform


Top of the platform

platform robot mensuras superiores

In hac parte et habitet cum servo motor, et non habebis consortium neque cum inferiore parte ANISOCYCLUM. Primum incides 170mm diametro circuli ergo faciemus quatuor foramina ad Cochleas in fronte rectangulum inserere servo motor non posuit mensuras quod tali forma servo motor uteris .

platform summitatem

Ultrasonic sensorem pro laminam

platform robot mensuras superiores

Lamina connectunt servo motore ultrasound soni si sit lignorum habebimus duas partes coniungere, aluminium una pars duplex est, primum incidi argenti simul ambae Exigua parte ut eaa foramen facies, et circa quod metrica illa III de servomotor firmamentum (cum emere servomotor est commune ad te venire cum alia subsidia ad ancoram in casu, ego utor a crux est), tum fac foramina magna partem habent in ultrasound soni Cochleas nuces.

sensorem tabula

Quo facto totum ponatur.

platform mounted

platform mounted

platform mounted

tabula Connection

ratio connexionis

Pio IV, V, VI, VII scutum est motor control sunt a duobus motoribus

cortinas atrii cum nexum

Software

Nos focus in partem software in cuius demonstratio cum robot operationem.

Arduino robot

Ut sit progressio facere aliquantulus longa, et visum est proponere operatio algorithm, id iuvabit, ubi nos multum Aliquam libero. An algorithm esse concedit ut a paro of mandantes quod in actione praestare.

algorithm,

robot algorithm

Plures deinde propositum principale propositum subprograms dividitur in qua princeps postulat et principium et finem in globulis ponuntur subprograms metiens spatium laterales secundum varias distantias praemissis.

progressio:

//Librerias
#include <Servo.h>

//Declaración E/S
int EM1 = 2; //Encoder motor 1 (Izquierda)
int EM2 = 3; //Encoder motor 2 (Derecha)
int M2D = 4; //Motor 2 control de dirección (Derecha)
int M1P = 6; //Motor 1 control PWM
int M2P = 5; //Motor 2 control PWM
int M1D = 7; //Motor 1 control de dirección (Izquierda)
int SU = 8; //Sensor de distancia por ultrasonidos
Servo servo1; //Servomotor
int BI = 10; //Boton de inicio
int BP = 11; //Boton de paro

//Declaración variables
int CRI = 0; //Contador rueda izquierda
int CRD = 0; //Contador rueda derecha
int EBI = 0; //Estado boton inicio
int velocidad = 200; //Velocidad de los motores
long dist = 0; //Distancia del robot (cm)
long duracion = 0; //Duración del recorrido del ping (microsegundos)
int VEA = 0; //variable encendido/apagado
int EBP = 0; //Estado boton de paro
long distizq = 0; // Distancia del robot (cm) a su izquierda
long distder = 0; // Distancia del robot (cm) a su derecha
byte giro = 0; //Variable para saber por donde girar
byte caso = 0; //Para seleccionar el caso de giro
int estadoAnterior = 0; //variables para cambio de estado del encoder izquierdo
int estadoActual;       //variables para cambio de estado del encoder izquierdo
int estadoAnterior1 = 0; //variables para cambio de estado del encoder derecho
int estadoActual1;      //variables para cambio de estado del encoder izquierdo

void setup() {
pinMode(M1D, OUTPUT);
pinMode(M2D, OUTPUT);
pinMode(EM1, INPUT);         //encoder 1 como entrada
digitalWrite(EM1, HIGH);    //resistencia pull-up para encoder
pinMode(EM2, INPUT);          //encoder 2 como entrada
digitalWrite(EM2, HIGH);    //resistencia pull-up para encoder
servo1.attach(9);  //inicializamos servo
servo1.write(100);   //lo colocamos en una posición media
pinMode(BI, INPUT);  //Boton de inicio como entrada
pinMode(BP, INPUT);  //Boton de paro como entrada
}

void loop() {
EBP=digitalRead(BP);    //lee los estados del boton
EBI=digitalRead(BI);    //lee los estados del boton
if (EBI == HIGH){        //si el estado del boton de inicio esta on
VEA = 1;              //variable encendido/apagado = 1

}
else if(EBP == HIGH) {    //si esta el de paro on
VEA = 0;               //variable encendido/apagado = 0
}
dist = sensorultrasonidos(); //Llama a la función para saber la distancia
if (VEA == 1 && dist > 15){  //Si la variable encendido/apagado tiene valor high y hay distancia suficiente
avanzar();  //Ir a la función avanzar
}
if (VEA == 1 && dist < 15){  //Si la variable encendido/apagado tiene valor high y no hay distancia suficiente
caso = comprobarbandas();  //Comprobamos bandas y depende el caso ira a una función determinada
switch(caso) {
case 1:
derecha();
break;
case 2:
izquierda();
break;
case 3:
giro180();
break;
}
}
}
void avanzar () {  //Función de avanzar hasta que haya una distancia de 15cm con el objeto en frente
digitalWrite(M1D,LOW);
digitalWrite(M2D, LOW);
analogWrite(M1P, velocidad);
analogWrite(M2P, velocidad);
while(dist >15){
dist = sensorultrasonidos(); //Llama a la función para saber la distancia
}
frenar();
}

int sensorultrasonidos() { //Función para medir la distancia con el sensor de ultrasonidos (cm)
pinMode(SU, OUTPUT);              //Configuramos el sensor de ultrasonidos como salida
digitalWrite(SU, LOW);            //Hacemos ping LOW-HIGH-LOW
delayMicroseconds(2);
digitalWrite(SU, HIGH);
delayMicroseconds(15);
digitalWrite(SU, LOW);
delayMicroseconds(20);
pinMode(SU, INPUT);               //Configuramos el sensor de ultrasonidos como entrada
duracion = pulseIn(SU, HIGH);     //Leemos la duración del pulso
delay(50);
return duracion / 29 / 2;     // Conversión de microsegundos a la distancia cm (velocidad del sonido 340m/s o 29 microsegundos por centimetro y son ida y vuelta /2)
}

void frenar (){    //funcion para frenar el robot
digitalWrite(M1D,HIGH);
digitalWrite(M2D, HIGH);
analogWrite(M1P, 0);
analogWrite(M2P, 0);
}

void derecha() {    //función para girar a la derecha teniendo en cuenta la rotacion de los encoders
digitalWrite(M1D,LOW);
digitalWrite(M2D, HIGH);
analogWrite(M1P, velocidad);
analogWrite(M2P, velocidad);
while (CRI <= 15 && CRD <=15 ){
contador_izq();
contador_der();
}
frenar();
}

void izquierda() {    //función para girar a la izquierda teniendo en cuenta la rotacion de los encoders
digitalWrite(M1D,HIGH);
digitalWrite(M2D, LOW);
analogWrite(M1P, velocidad);
analogWrite(M2P, velocidad);
while (CRI <= 15 && CRD <=15 ){
contador_izq();
contador_der();
}
frenar();
}

void giro180() {    //función para girar 180º teniendo en cuenta la rotacion de los encoders
digitalWrite(M1D,LOW);
digitalWrite(M2D, HIGH);
analogWrite(M1P, velocidad);
analogWrite(M2P, velocidad);
while (CRI <= 30 && CRD <=30 ){
contador_izq();
contador_der();
}
frenar();
}

void contador_izq(){    //Contaje de los estados del encoder izquierdo
estadoActual = digitalRead(EM1);
if (estadoAnterior != estadoActual)  // ha habido un cambio de estado
{
CRI++;                          // cuenta los cambios de estado
estadoAnterior = estadoActual;
}
}

void contador_der(){    //Contaje de los estados del encoder derecho
estadoActual1 = digitalRead(EM1);
if (estadoAnterior1 != estadoActual1)  // ha habido un cambio de estado
{
CRD++;                          // cuenta los cambios de estado
estadoAnterior1 = estadoActual1;
}
}

int comprobarbandas() {    //Función para comprovar bandas, mide la distancia de la izquierda y la derecha
CRI = 0;
CRD = 0;
servo1.write(5);
delay(500);
distizq = sensorultrasonidos();
servo1.write(175);
delay(500);
distder = sensorultrasonidos();
servo1.write(100);
delay(500);
if (distder >= distizq && distder > 15) {    //si la distancia derecha es mayor o igual a la distancia izquierda, girara a la derecha
giro = 1;
}
else if(distizq >= distder && distizq > 15) {  //si la distancia izquierda es mayor o igual a la distancia derecha, girara a la izquierda
giro = 2;
}
else if(distizq < 15 && distder < 15) {
giro = 3;
}
return giro;
}

demonstrationem:

[Illustratur] Hic primum articulum scriptum est quia per wk3 Ikkaro [/ illustravit]

II comments on "Class aptent taciti sociosqu ad litora torquent per Arduino cum robot"

  1. Bonum nocte in software est propinquitas sensorem arduino robot, est variabilis rursus = I, tanto dictum sit progressio, ut rursus ad dextram sive ad libraries coniunctum est id quod est intelligere.
    ad eundem rursus = II (robot et ad sinistram averte) et conversus = III (robot vade et convertat)
    Explicate hoc dubio haberem, GRATIAS AGO.

    In hoc the robot non habet vacuo ut novis epistolis, et in vestigio reprehendo appellabatur Funiculus, similiter Quod filii reditusque reditur deducatur variis iis in ALIQUA RE = III, sed ea natura existimatur, ut non aliquid vacuum, quod vocatur CUM ALIQUA.

    SALUTEM et spero vestra auctoritate fecistis.

    responsum
  2. Bonum nocte in software est propinquitas sensorem arduino robot, est variabilis rursus = I, tanto dictum sit progressio, ut rursus ad dextram sive ad libraries coniunctum est id quod est intelligere.
    ad eundem rursus = II (robot et ad sinistram averte) et conversus = III (robot vade et convertat)
    Explicate hoc dubio haberem, GRATIAS AGO.

    In hoc the robot non habet vacuo ut novis epistolis, et in vestigio reprehendo appellabatur Funiculus, similiter Quod filii reditusque reditur deducatur variis iis in ALIQUA RE = III, sed ea natura existimatur, ut non aliquid vacuum, quod vocatur CUM ALIQUA.

    SALUTEM et spero vestra auctoritate fecistis.

    responsum

Deja un comentario