Укачивальщик младенцев на ардуино

схема подключения микрофона
По ссылке ниже можно прочитать, как сделать укачивальщик младенцев с помощью ардуино или CraftDuino :)
Укачивальщик младенцев на ардуино

Код для Arduino

#include <ServoTimeTimer1.h>

#define servoPin1 10 

ServoTimeTimer1 servo1;

int micPin = 0; //mic. amp to pin 0.

int ledPin = 7; // LED connected to digital pin 7

int potpin = 2; // 10K pot on pin 2

int swpin = 3; // mode switch

int potv = 0; // value from pot

int stime = 800; // servo timer in rest. 500 to 2500.

int rcount = 0; // rock count in loop

int volu = 0; // detected sound

int soundcount = 0; //number of detected sounds

int numberofrocks = 0; // rumber of rocks to be

boolean trigg=false;


void setup()
{
    pinMode(ledPin, OUTPUT);

    pinMode(potpin, INPUT);

    pinMode(micPin, INPUT);

    pinMode(swpin, INPUT);

    servo1.attach(servoPin1);

    Serial.begin(9600);

    servo1.write((stime));

    digitalWrite(ledPin, LOW);
}

////////////////////////////////////////

void loop()
{

    if(analogRead(swpin)>500) crock(); // check if the input is HIGH, go to sub crock)

    if (listen()==true)soundcount=soundcount+2;

    //if the counter is above 0, reduse.

    if (soundcount>0) soundcount=soundcount-1;

    if (soundcount>=5) { //check counter, if high, rock the cradle!
        rockcradle(20);
        soundcount=4; // leave counter at high value for quick restart
    }

    //Serial.println(soundcount); //debug

}

////////////////////////////////////////

void rockcradle(int numberofrocks)
{
    for (rcount=0; rcount<numberofrocks; rcount++){
        potv=analogRead(potpin);

        servo1.write((stime+potv));

        delay(300);

        servo1.write((stime));

        delay (300);
    }
}

//////////////////////////////////////////

bool listen()
{
    for (int i=0; i <= 250; i++){ // count to 250 is about 5 sec...

        volu=analogRead(micPin);

        Serial.println(volu); // serial print value for debugging...

        if (volu<600){

        digitalWrite(ledPin, HIGH);

        delay (2);

        digitalWrite(ledPin, LOW);

        delay (40); 

        return true;}

        delay(20);
    }

    //tillbaka till main loop

    delay(20);

    return false;
}

///////////////////////////////////////

void crock()
{ 
    while (analogRead(swpin) > 500){

        digitalWrite(ledPin, HIGH);

        delay (1);

        digitalWrite(ledPin, LOW);

        delay (0);

        potv=analogRead(potpin); // to control speed...

        servo1.write((stime+potv));

        Serial.println(stime+potv);

        delay(500);

        servo1.write((stime));

        delay (500);
    }

}

///////////////////////////////////////


далее: Автоматизация качания детской кроватки на Arduino и частях от ЧПУ

Ссылки
Arduino crib rocker

Arduino
Ардуино что это и зачем?
Arduino, термины, начало работы
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
  • 0
  • 13 ноября 2009, 11:13
  • admin

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.