Paso 4: Código de Arduino
Este es el código de Arduino para un análisis de proximidad de colega por Sander van Haperen
Se ha actualizado última en agosto de 2014. Se basa originalmente en un código para el proyecto de alimentación de Arduino RSS, por buñuelo
int startstring = 0; reconocimiento del principio de la nueva cadena int charcount = 0; seguimiento de total de caracteres en pantalla
const int ledPin = 6; el pin que el LED está conectado a int incomingByte; variable para leer los datos entrantes en serie en
readString de cadena #include, incPinInit, incPin1, incPin2, incPin3, incPin4, incPin5, incPin6;
Servo myservo; crear objeto servo para controlar un servo / / se puede crear un máximo de ocho objetos de servo
#include / / importación el lcd LiquidCrystal librería LiquidCrystal (12, 11, 5, 4, 3, 2);
void setup() {Serial.begin(9600); / / abre el puerto serie, establece la tarifa de datos a 9600 bps lcd.begin(16,2); / / inicializar el tamaño de la LCD 16 x 2. Cambio si se utiliza una lcd.setCursor(0,0) más grande del LCD; Establecer la posición del cursor a la parte superior izquierda esquina
myservo.Attach(6); se fija el servo en el pin 9 al objeto servo para (int thisPin = 2 thisPin < 13; thisPin ++) {//init pernos de 2 a 6 como salida pinMode (thisPin, salida);}}
void loop() {char c = 0; / / para datos entrantes seriales mientras (Serial.available()) {delay(5); //delay para permitir que el tampón llenar
Si (Serial.available() > 0) {}
char c = Serial.read(); Obtiene un byte del buffer serial readString += c; hace la cadena readString}
Serial.println(readString);
Si (readString.length() > 0) {}
digitalWrite (13, HIGH); configurar el LED pin 13 como indicador de la recepción de datos en serie / / esperan recibir una cadena como 07002100 que contiene el pin Estados incPinInit = readString.substring (0, 1); obtener el primer carácter para buscar símbolo init
Serial.println(readString); ver lo que fue recibido, si (incPinInit == "*") {//check para marcador / 'cabecera' que significa ping Estados incPin1 = readString.substring (2, 3); //get el siguiente incPin2 de carácter = readString.substring (4, 5); //get el siguiente carácter incPin3 = readString.substring (6, 7); //get el siguiente carácter incPin4 = readString.substring (8, 9); //get el siguiente incPin5 de carácter = readString.substring (10, 11); //get el siguiente carácter incPin6 = readString.substring (12, 13); //get el siguiente carácter
int n1 = incPin1.toInt(); int n2 = incPin2.toInt(); int n3 = incPin3.toInt(); n4 int = incPin4.toInt(); n5 int = incPin5.toInt(); int n6 = incPin6.toInt(); para (int thisPin = 2 thisPin < 13; thisPin ++) {//reset estado predeterminado para todos los pernos baja digitalWrite (thisPin, LOW);}
ahora Verifique todos los 6 Estados del perno y escribir alta si Estado de ping es positivo si (n1 == 1) {digitalWrite (10, HIGH);} si (n2 == 1) {digitalWrite (9, alto);} si (n3 == 1) {digitalWrite (8, HIGH);} si (n4 == 1) {digitalWrite (7, alto);} si (n5 == 1) {digitalWrite (5, alto);} si (n6 == 1) {digitalWrite (1, alto);}
} Si (incPinInit == "~") {//check para marcador / 'cabecera' que significa ping Estados startstring = 0; / / configurar la impresión en off delay(5000); / / esperar 5 segundos lcd.clear(); / / Limpie la pantalla charcount = 0; / / restablecer el recuento de caracteres lcd.setCursor(0,0) 0; / / reset el cursor en 0,0 si (startstring == 1) {/ Compruebe si la cadena ha comenzado a si primer ' ~' ha sido leído Si (charcount < = 30) {/ / comprobar si charcount es bajo o igual a 30 lcd.print(incomingByte); / / imprimir el byte actual en la serie Serial.print(incomingByte); charcount = charCount ++; Incrementar la charcount en 1 sí sé que es difícil}} si (charcount == 31) {/ si la charcount es igual a 31 también conocido como la pantalla es completa delay(500); lcd.clear(); / claro el lcd.setCursor(0,0) de la pantalla; / / cursor para lcd.print(incomingByte) 0,0; / / continuar impresión charcount de datos = 1; / / establecer charcount en 1} si (incomingByte == ' ~') {/ / Compruebe si el byte es marcador ~ para iniciar la impresión startstring = 1; / / comenzar la impresión}} digitalWrite (13 BAJA); int pos = 90; variable para almacenar el myservo.write(pos) de posición del servo; Dile el servo a la posición en la variable 'pos' delay(10);
}
} readString = ""; }