Paso 6: Montar circuitos de juguete
Ahora, hay un poco de encurtido aquí. El arduino generalmente transmite un valor de '0'. Sin embargo, por razones que aún no hemos determinado, el arduino a veces transmite todo como carácter ASCII es 48 por encima de todo lo que usted desea. Tenemos esta dificultad por simplemente tener la prueba de arduino receptor para dos valores posibles, pero estaremos seguros de actualizar esto si nosotros averiguar por qué obtenemos valores divertidos a veces. Ayuda a asegurarse de que usted utilice el comando Serial.write(), no los Serial.print() Serial.println() comandos o cuando estás esperando realmente transmitir datos a través de las radios. También, en este punto, como usted comience a enchufar cosas y poner código en los Arduinos, usted querrá evitar cargar código en un Arduino que tiene algo enchufado en la TX o RX pasadores (pines 0 y 1).
Utilizamos tres 1.5V baterías en serie para alimentar el arduino (tres AAs). El arduino realiza alguna regulación de la energía interna, por lo que puede alimentar el arduino de 4, 5V o 6V.
La soldadura de los cables de tierra de los sensores de dos flex y junto, dejando el extremo de un plomo enchufar en la placa arduino. Hacer lo mismo con los cables de corriente de tres. Enchufe que el suelo lleva en uno de los pines de tierra sobre el arduino y el poder conduce a la clavija de alimentación de 5V. Enchufe el cable de alimentación de lo XBee en el 3.3V pin y el cable de tierra de lo XBee en otro pin de tierra, luego conecte la RX/DIN en el pin TX del arduino. (El XBee está recibiendo de arduino, por lo tanto, la entrada del XBee se conecta a la salida del arduino.) Por último, enchufe el cable de tierra de la unidad de masa en el conector de tierra final y el cable de alimentación de la batería en el pin Vin.
Ahora se monta el circuito de juguete! Ahora todo lo que necesitas hacer es programar el arduino. Utilizamos el siguiente código para el control de nuestro juguete.
Valores para ser leído
int accelVal = 0;
int bendVal1 = 0;
int bendVal2 = 0;
int accelRef;
int bendRef1;
int bendRef2;
Boolean accelOn = false;
bendOn boolean = false;
int sendVal = 0;
void setup() {}
Este código ejecuta una vez, al principio
Serial.Begin(9600); Inicializar el monitor serial
Obtener valores de referencia: estos nos permiten calibrar los valores que nos envíe para cualquier variación en el comportamiento del componente
accelRef = analogRead(A3);
bendRef1 = analogRead(A4);
bendRef2 = analogRead(A5);
}
void loop() {}
Este código funciona continuamente
Delay(1);
Obtener los valores de
accelVal = analogRead(A3);
bendVal1 = analogRead(A4);
bendVal2 = analogRead(A5);
Compruebe si el acelerómetro está en
Si ((accelVal-accelRef) > (accelRef / 3)) {/ / esto es una referencia arbitraria que encontramos bien
accelOn = true;
} else {}
accelOn = false;
}
Verificar la curva de sensores en
Si ((bendVal1 < (3 * bendRef1/4)) || (bendVal2 < (3 * bendRef2/4))) {/ / Esto es una referencia arbitraria
bendOn = true;
} else {}
bendOn = false;
}
Determinar el valor correcto para transmitir basado en los sensores
Si (accelOn == false) {}
Si (bendOn == false) {}
sendVal = 0;
} else {}
sendVal = 1;
}
} else {}
Si (bendOn == false) {}
sendVal = 2;
} else {}
sendVal = 3;
}
}
Transmitir el valor
Serial.Write(sendVal);
}