Göra din Arduino ljud och flytta som en fågel (2 / 4 steg)
Steg 2: Koden
{{{
motor
#include < Servo.h >
Servo servo;
int servoP = 9;
int angulo = 0;
int anguloslow = 0;
int counter = 0;
int counterslow = 0;
int rörelser = 0;
piezo
int piezopin = 11; Välj ingångsstiftet för talaren
potentiometer
int potPin = 2; Välj input PIN-koden för potentiometer
int val = 0; variabel för att lagra värdet kommer från sensorn
void setup() {
piezo
pinMode(piezopin,OUTPUT);
initiera seriell kommunikation (för felsökning endast):
Serial.BEGIN(9600);
}
void loop() {
spelar upp ett ljud och flyttar enligt potentiometer. Potentiometer returnerar ett tal mellan 0 och 1023
Val = analogRead(potPin); läsa värdet från sensorn
för (int jag = 0; jag < 5; i ++) {
Val = analogRead(potPin); läsa värdet från sensorn
kartor potten värde till angulo (10 till 50)
Val = karta (val, 0, 1023, 20, 50);
Serial.println(val); skriva ut potentiometer (för felsökning endast)
räknare = random(2,6);
Angulo = val;
drag enligt: angulo, normalt 10-50. räknaren: hur många gånger går fram och tillbaka, rormally 3-6. servoP är den PIN-kod
Moveit(Angulo,Counter,servoP);
gör ljudet enligt: intensitet, varierar: normalt 5. antal gånger: hur många gånger tweets, rormally 3-6
highChirp(5,angulo/10);
Delay(100);
lowChirp(angulo*4,2);
Delay(100);
Tweet(Counter,2);
fördröjning mellan närmare tweets
Delay(400);
}
allmän försening efter en serie tweets
Delay(Random(20000));
}
void moveit (int anglefin, int rörelser, int servoPin) {
servo.attach(servoPin);
för (int jag = 0; jag < rörelser; i ++) {
Skanna från 0 till 180 grader
för (int vinkel; vinkel < anglefin; vinkel ++)
{
servo.write(Angle);
Delay(Random(5));
}
nu Skanna tillbaka från 180 till 0 grader
för (int vinkel = anglefin; vinkel > 0; vinkel--)
{
servo.write(Angle);
Delay(Random(5));
}
}
servo.detach();
}
void highChirp (int intensitet, int chirpsNumber) {
int i;
int x;
för (int veces = 0; veces < = chirpsNumber; veces ++) {
för (jag = 100; jag > 0; i--)
{
för (x = 0; x < intensitet; x ++)
{
digitalWrite (piezopin, hög);
delayMicroseconds (i);
digitalWrite (piezopin, låg);
delayMicroseconds (i);
}
}
}
}
void lowChirp (int intensitet, int chirpsNumber) {
int i;
int x;
för (int veces = 0; veces < = chirpsNumber; veces ++) {
för (jag = 0; jag < 200; i ++)
{
digitalWrite (piezopin, hög);
delayMicroseconds(i);
digitalWrite(piezopin,LOW);
delayMicroseconds(i);
}
för (jag = 90; jag > 80; i--)
{
för (x = 0; x < 5; x ++)
{
digitalWrite (piezopin, hög);
delayMicroseconds (i);
digitalWrite (piezopin, låg);
delayMicroseconds (i);
}
}
}
}
void tweet (int intensitet, int chirpsNumber) {
int i;
int x;
normala chirpsNumber 3, normal intensitet 5
för (int veces = 0; veces < chirpsNumber; veces ++) {
för (int jag = 80; jag > 0; i--)
{
för (int x = 0; x < intensitet; x ++)
{
digitalWrite (piezopin, hög);
delayMicroseconds (i);
digitalWrite (piezopin, låg);
delayMicroseconds (i);
}
}
}
Delay(1000);
}
}}}