segunda parte
// move 5: abra la puerta, luego mueva la mano muy lentamente hacia adelante y hacia atrás
//para esconderse muy lentamente, luego cierre rápidamente la puerta
void crazyslow(){
Serial.println("crazyslow empieza");
//Moving door
doorMoveP(50, 109, 1, 15);
//Moving hand
handMoveN(100, 0, -1, 30);
//hiding hand
handMoveP(0, 100, 1, 30);
//hiding door
doorMoveN(109, 90, -1, 30);
delay(100);
doorMoveN(90, 0, -4, 15);
Serial.println("crazyslow termina");
}
//move 6:
void m7anika7anika() {
Serial.println("m7anika7anika empieza");
// Moving door
doorMoveP(50, 109, 3, 15);
//Moving hand
handMoveN(100, 32, -1, 15);
delay(800);
//hiding door
doorMoveN(109, 95, -3, 15);
//hiding door
doorMoveP(95, 109, 3, 15);
// hiding door
doorMoveN(109, 95, -3, 15);
//hiding door
doorMoveP(95, 109, 3, 15);
handServo.write(40);
delay(1000);
//Moving hand
handMoveN(40, 0, -4, 15);
//hiding hand
handMoveP(0, 100, 4, 15);
doorMoveN(109, 50, -1, 15);
Serial.println("m7anika7anika termina");
}
void m3alla2(){
Serial.println("m3alla2 empieza");
// Moving door
doorMoveP(50, 109, 3, 15);
// Moving hand
handMoveN(100, 0, -4, 15);
//hiding door
doorMoveN(109, 95, -3, 15);
delay(2000);
doorMoveP(95, 109, 3, 15);
doorMoveN(109, 93, -3, 15);
doorMoveP(93, 109, 3, 15);
delay(500);
//hiding hand
handMoveP(0, 100, 4, 15);
//hiding door
doorMoveN(109, 50, -3, 15);
Serial.println("m3alla2 termina");
}
void matrix() {
Serial.println("matrix empieza");
// Moving door
doorMoveP(50, 109, 3, 15);
//Moving hand
handMoveN(100, 80, -4, 15);
handMoveN(56, 0, -1, 30);
delay(300);
handMoveP(0, 100, 4, 10);
//hiding door
doorMoveN(109, 50, -3, 15);
Serial.println("matrix termina");
}
void sneak() {
Serial.println("sneak empieza");
// Moving door
doorMoveP(50, 95, 1, 30);
delay(2000);
//Moving hand
handMoveN(100, 55, -1, 30);
delay(500);
doorMoveP(95, 109, 4, 15);
delay(100);
handMoveN(55, 28, -4, 15);
delay(500);
//hiding hand
handMoveP(28, 55, 4, 15);
delay(100);
handMoveN(55, 28, -4, 15);
delay(100);
handMoveP(28, 55, 4, 15);
delay(100);
handMoveN(28, 55, -4, 15);
handMoveP(0, 100, 4, 15);
//hiding door
doorMoveN(109, 50, -3, 15);
Serial.println("sneak termina");
}
// este movimiento abrirá la puerta y esperará el movimiento, si se detecta cerca del interruptor,
// la caja se moverá primero a la derecha y luego a la izquierda, y finalmente la mano se mueve y apaga el interruptor
void zee7() {
Serial.println("zee7 empieza");
// open door
doorMoveP(50, 109, 3, 15);
delay(1200); //espere para estabilizar las lecturas del sensor después de abrir la puerta
// configurar el temporizador y leer el sensor
// esperar a un movimiento que exceda el umbral o si el temporizador expira (5 sec),
lastDist= analogRead(motionPin);
TimerA= millis();
while(millis()-TimerA <= 5000) {
currentDist = analogRead(motionPin);
//¿La distancia actual se desvía de la última distancia en más del umbral?
//si es así, mueva el cuadro a la derecha
if ((currentDist > lastDist + thresh || currentDist < lastDist - thresh) || currentDist > 300) {
//avance velocidad media hacia la izquierda (elija la velocidad y la demora
//(i.e delay(300) de acuerdo con la caja y el voltaje de la batería de modo que el lanzamiento de movimiento sea deseable)
digitalWrite(motorDirection, LOW); //Establishes RIGHT direction of Channel A
digitalWrite(motorBrake, LOW); //Disengage the Brake for Channel B
analogWrite(motorThrottle, 100); //Spins the motor on Channel B at full speed
delay(300);
digitalWrite(motorBrake, HIGH); //Eengage the Brake for Channel B
break;
}
lastDist = currentDist;
}
// configurar el temporizador y leer el sensor
// espere un movimiento que exceda el umbral o si el temporizador expira (5 sec),
delay(1200); //espere para estabilizar las lecturas del sensor después de abrir la puerta
lastDist = analogRead(motionPin);
TimerB = millis();
while (millis()-TimerB <= 5000) {
currentDist = analogRead(motionPin);
//¿La caja ya se movió hacia la derecha y la distancia actual se desvió de la última distancia en más del umbral?
// Si es así, entonces muévase hacia la izquierda
if ((currentDist > lastDist + thresh || currentDist < lastDist - thresh) || currentDist > 300) {
//hacia atrás @ velocidad media hacia la derecha (elija la velocidad y la demora
//(i.e delay(300) de acuerdo con la caja y el voltaje de la batería de modo que el lanzamiento de movimiento sea deseable)
digitalWrite(motorDirection, HIGH); //Establece la dirección IZQUIERDA de Channel B
digitalWrite(motorBrake, LOW); //Desengrane el freno para Channel B
analogWrite(motorThrottle, 100); //Enciende el motor Channel B a media velocidad
delay(300);
digitalWrite(motorBrake, HIGH); //Enganche el freno por Channel B
break;
}
lastDist = currentDist;
}
delay(100);
// Moving hand
handMoveN(100, 0, -4, 15);
// hiding hand
handMoveP(0, 100, 4, 15);
//hiding door
doorMoveN(109, 50, -3, 15);
Serial.println("zee7 termina");
}
void doorMoveP(int desde, int hasta, int paso, int temp) {
unsigned int cont = 0;
for (pos = desde; pos < hasta; pos +=paso) {
doorServo.write(pos);
if (DEBUG_PRINT) {
Serial.print(pos);
Serial.print(" ");
if(cont++>20){
cont = 0;
Serial.println();
}
}
delay(temp);
}
}
void doorMoveN(int desde, int hasta, int paso, int temp) {
unsigned int cont = 0;
for (pos = desde; pos >= hasta; pos +=paso) {
doorServo.write(pos);
if (DEBUG_PRINT) {
Serial.print(pos);
Serial.print(" ");
if(cont++>20){
cont = 0;
Serial.println();
}
}
delay(temp);
}
}
void handMoveP(int desde, int hasta, int paso, int temp) {
unsigned int cont = 0;
for (pos = desde; pos < hasta; pos += paso) {
handServo.write(pos);
if (DEBUG_PRINT) {
Serial.print(pos);
Serial.print(" ");
if(cont++>20){
cont = 0;
Serial.println();
}
}
delay(temp);
}
}
void handMoveN(int desde, int hasta, int paso, int temp) {
unsigned int cont = 0;
//sprintf(buffer, "desde %d hasta %d paso %d temp %d", desde, hasta, paso, temp);
//Serial.println(buffer);
for (pos = desde; pos >= hasta; pos+=paso) {
handServo.write(pos);
if (DEBUG_PRINT) {
Serial.print(pos);
Serial.print(" ");
if(cont++>20){
cont = 0;
Serial.println();
}
}
delay(temp);
}
}