Robot serpiente (3 / 16 paso)

Paso 3: Combinar motores y sensores de fotocelda

Descripción

En este paso tomando los tres sensores de fotocelda y utilizarlos para manejar las velocidades del motor.  En nuestro código estaremos consultando los motores a base de Motor A o Motor B, basado en donde estén enchufados en el protector de motor y los sensores será 3 Sensor y Sensor 4 Sensor 5, en donde se unen a las lecturas analógicas.  Sensor 3 y 4 Sensor los sensores direccionales y Sensor 5 será el sensor de luz ambiental.

Algoritmo de

Para controlar los motores, va a obtener la base de la lectura de todos los sensores de tres primeros (estos se almacenan en photocellReading #).

Entonces las diferencias entre el Sensor de 3 y 5 del Sensor (y guardarlo en photocellDifference1) así como la diferencia entre Sensor de 4 y 5 del Sensor (y guardarlo en photocellDifference2).  Esto nos dirá cuánto más brillante los sensores direccionales son del sensor de ambiente.  Puesto que la luz que brillo en estos sensores, las lecturas de diferencia deben decirnos cuanta luz está siendo dirigido en cada sensor.

Luego reste photocellDifference1 y photocellDifference2 unos de otros y guardarlo en lrValue.  Teniendo esta diferencia, somos capaces de decirle cuánto más luz cada sensor direccional es detección.  Si este número es negativo que significa Sensor de 4 tiene menos luz que el Sensor de 3 y más velocidad debería estar orientado al Motor B.  Si el lrValue es positivo que significa que 3 Sensor tiene más luz que el Sensor de 4 y más velocidad debe orientarse a Motor.

Código

/*
int photocellReading3; el análogo del divisor de resistencia análoga
int photocellReading4; el análogo del divisor de resistencia análoga
int photocellReading5; el análogo del divisor de resistencia análoga

int photocellDifference1;
int photocellDifference2;
int lrValue;

void setup(void) {}
Serial.Begin(9600);

pinMode (12, salida); A pin inicia canal de Motor
pinMode (9, salida); A pin inicia canal de freno

pinMode (13, salida); Clavija de iniciados Motor canal de B
pinMode (8, salida); Pin de B inicia canal de freno

digitalWrite (13, bajo); Establece la dirección de avance de canal A
digitalWrite (8, bajo); Soltar el freno para el canal A

digitalWrite (12, bajo); Establece la dirección de avance de canal B
digitalWrite (9, bajo);   Soltar el freno para el canal B
}

void loop(void) {}
photocellReading3 = analogRead(3); base luz lectura
photocellReading4 = analogRead(4); base luz lectura
photocellReading5 = analogRead(5); base luz lectura

obtener diferencias entre los sensores de los motores y sensor de luz ambiental
photocellDifference1 = (photocellReading3 - photocellReading5);
photocellDifference2 = (photocellReading4 - photocellReading5);

obtener la diferencia entre las dos lecturas
lrValue = photocellDifference2 - photocellDifference1;

control de la velocidad para cada motor basado en lrValue
Si (lrValue < = -120) {}
analogWrite (11, 255);
analogWrite (3, 100);
} else if (lrValue < = -90) {}
analogWrite (11, 224);
analogWrite (3, 100);
} else if (lrValue < = -60) {}
analogWrite (11, 193);
analogWrite (3, 100);
} else if (lrValue < = -40) {}
analogWrite (11, 162);
analogWrite (3, 100);
} else if (lrValue < = -25) {}
analogWrite (11, 131);
analogWrite (3, 100);
} else if (lrValue < 25) {}
analogWrite (11, 100);
analogWrite (3, 100);
} else if (lrValue < 40) {}
analogWrite (11, 100);
analogWrite (3, 131);
} else if (lrValue < 60) {}
analogWrite (11, 100);
analogWrite (3, 162);
} else if (lrValue < 90) {}
analogWrite (11, 100);
analogWrite (3, 193);
} else if (lrValue < 120) {}
analogWrite (11, 100);
analogWrite (3, 224);
} else {}
analogWrite (11, 100);
analogWrite (3, 255);
}
}

Video del control de los motores con sensores de luz

Velocidad de romper

En el código, se puede ver tenemos una larga lista de if else declaraciones controlando la velocidad de cada motor.  Este código funciona para nuestra serpiente y nuestra combinación de motor/sensor de la fotocélula.  Si han cambiado los materiales para su serpiente o encontrar que estos valores no funcionan para usted, cuando sienta libre cambiar los valores hasta encontrar control de velocidad que trabaja para usted.  La serpiente está destinado a trabajar en condiciones de poca luz y a una velocidad bastante rápida.  Si desea que su serpiente más lento, por ejemplo, puede que desee ampliar su gama de lrValues en el if else declaraciones, por lo que se llevará una luz de alta potencia dirigida a un sensor antes los motores alcancen mayor velocidad.

También se encontró que cada motor necesita un valor mínimo de velocidad (nuestra era 100) para poder tirar el peso de la serpiente.  Nunca podría ser un valor de velocidad de 0 a un motor.  Si un motor parar completamente, luego tomaría demasiado trabajo conseguir el motor otra vez en movimiento.

Se encontró que fue más fácil planificar los controles de velocidad en una tabla antes de escribir lo if else declaraciones.  Esta era nuestra mesa:
Motor A Motor B
lrValue analógico 3 analógico 11
-∞ →-120 225 100
-→ 119-90 224 100
-→ 89-60 193 100
-→ 59-40 162 100
-39 →-25 131 100
-24 → 24 100 100
→ 25 39 100 131
→ 40 59 100 162
60 → 89 100 193
90 → 119 100 224
120 → ∞ 100 225

Artículos Relacionados

Robot serpiente impreso 3D

Robot serpiente impreso 3D

Cuando llegué mi impresora 3D empecé a pensar qué puedo hacer con él. Imprimí un montón de cosas pero quería hacer una construcción con impresión 3D. Entonces pensé en hacer animales robot. Mi primera idea era hacer un perro o una araña, pero mucha g
Tentáculos de Animatronic con Arduino

Tentáculos de Animatronic con Arduino

Aviso *** este instructable es documentación para un trabajo en progreso. Aunque el proyecto no está todavía completa, ha llegado a un lugar donde creo que puede empezar a ser beneficioso para otros fabricantes.El concepto de este proyecto fue genera
PROTEI_007

PROTEI_007

Protei_007 es el séptimo prototipo para un proyecto llamado proteinuria, que es de código abierto, articulado, segmentado, robótica, sin tripulación, velero, construido para navegar contra el viento, arrastrando un auge largo aceite absorbente, para
Robots suaves: Hacer un músculo Artificial brazo y pinza

Robots suaves: Hacer un músculo Artificial brazo y pinza

Usando los músculos de aire artificial, un brazo de robot muy flexible y pinza se pueden hacer.Este robot suave es accionado por aire comprimido y cada uno de los 11 músculos puede controlarse mediante un control remoto universal infrarrojo estándar
Lindo pequeño Robot de arcilla

Lindo pequeño Robot de arcilla

Siempre me encanta hacer cositas lindas con la plastilina. Por eso me estoy estoy haciendo una niña linda de robot. Espero que lo disfruten.Paso 1: fuentes de En los suministros que se necesitan es plata arcilla (opcional), arcilla polimérica, arcill
Colas para los gemelos de la serpiente

Colas para los gemelos de la serpiente

para Burning Man de este año, lanzamos con nuestros buenos amigos Jon y Kystren de la forma y reforma . Muchos saben de su impresionante 'cómo hacer un coche de caracol' Instructable hicieron un tiempo atrás.Jon & Kyrsten tenían un gran, gran idea :
Hacer una natación Robo-serpiente

Hacer una natación Robo-serpiente

Sneel es el nombre de mi serpiente / anguila nadando robot. Se trata de documentación de hardware, software y diseño mecánico de Sneel_003.uretano de la flexión de la tubería, microcontroladores, radio inalámbrica Zigbee, abrazaderas, cables, motores
Traje de Kaiju Robot gigante profesional y Durable!

Traje de Kaiju Robot gigante profesional y Durable!

Para la mayoría de nosotros, creciendo viendo películas del monstruo era un elemento básico de nuestra infancia. Nos encantó ver enormes bestias de respiración de fuego atómico, acechando a un paisaje urbano mientras machacar edificios y habitantes a
Robot controlado por Sensor sin contacto

Robot controlado por Sensor sin contacto

Este proyecto es un simple robot controlado desde un PC por un teclado o un sensor sin contacto de movimiento de salto. El robot ejecuta en un PICAXE 20M 2 chip, un microcontrolador programado usando una forma de BASIC. Elegí el chip PICAXE porque er
Traje robot 2014

Traje robot 2014

Este año decidí hacer un par de trajes de robot para los niños. Mi objetivo era crear un robot cuadrado bastante clásico pero también quería agregar algunos elementos para hacerla un poco más creíble. Pude agregar una pantalla de luz en el pecho y un
Luz de noche de robot con dos caras

Luz de noche de robot con dos caras

tuve una pc vieja ahí--uno que debido a mi ignorancia o pereza no podía llegar a trabajar. Así, lo desmantelaron y utilizan sus piezas para crear un robot luz de noche. La luz de la noche fue agregada realmente a dar más de un efecto visual, podría h
ShakerBot: Un Snakeboard Robot

ShakerBot: Un Snakeboard Robot

cuando piensas de locomoción del robot, ¿qué es lo primero que viene a la mente? ¿Un bípedo? ¿un robot móvil con ruedas? ¿Un sistema de tracción diferencial?  Sinceramente, creo que hay muchos más interesantes biológicamente inspirado locomoción meca
IoT - controlar un Raspberry Pi Robot por internet con HTML y shell scripts sólo

IoT - controlar un Raspberry Pi Robot por internet con HTML y shell scripts sólo

(Si te gusta este Instructables, no olvide votar en ella (por encima de: bandera de la esquina a la derecha). está compitiendo en concursos de automatización y de INTERNET de las cosas. ¡Muchas gracias! ;-)En este instructables, aprenderemos cómo cre
Garra de robot para talleres!

Garra de robot para talleres!

Este es un diseño nuevo para una garra de robot simple que puede ser utilizado para talleres de electrónica! La garra puede agarrar objetos a la luz como pompones y vasos de espuma de poliestireno y es una gran introducción a un mecanismo actuador li