Emotidora: Hattar med känslor (6 / 6 steg)
Steg 6: Arduino kod (hur vi gjorde det)
räknarenint counter = 0; inte använder denna rätt försökte nu-tillämpa för när hall effekt sensor inte var fungerar ordentligt. dvs behandlingen fluktuerar vilt.
Fotomotstånd
int lightPin = A1; tilldela ljussensor ingångsstift
int groundPin = A4;
int groundValue = 0;
Halleffekten Sensor
int hallPin = A5; tilldela Halleffekten sensor ingångsstift
int hallValue = 0;
instansieras potentiometer
int sensorPin = A0; tilldela in PIN-koden för potentiometer
int sensorValue = 0; variabel för att lagra värdet kommer från sensorn
int outputValue = 0;
int newSensorValue = 0;
int newOutputValue = 0;
int newerOutputValue = 0;
tilldela pins till LED face-komponenter
int leende = 2;
int straightface = 3;
int ledsen = 4;
int ögon = 5;
int ögonbryn = 6;
byta fall variabel
int ansikte = 1;
känslor
CONST int ECSTATIC = 1;
CONST int HAPPY = 2;
CONST int rak = 3;
CONST int SAD = 4; const int arg = 5;
CONST int överraskning = 6;
SETUP
void setup() {
Serial.BEGIN(9600);
Halleffekten Sensor
pinMode (hallPin, ingång);
Potentiometer
pinMode(smile,OUTPUT);
pinMode(straightface,OUTPUT);
pinMode(sad,OUTPUT);
pinMode(eyes,OUTPUT);
pinMode(brows,OUTPUT);
}
MÖTA KOPPLING
void faceswitch() {
Switch(Face) {
extatisk
fall 1: digitalWrite (ögon, hög).
digitalWrite (leende, hög);
digitalWrite (straightface, hög);
digitalWrite (ledsen, låg);
digitalWrite (ögonbrynen, låg);
bryta;
Lycklig
fall 2: digitalWrite (ögon, hög).
digitalWrite (leende, hög);
digitalWrite (straightface, låg);
digitalWrite (ledsen, låg);
digitalWrite (ögonbrynen, låg);
bryta;
rak
fall 3: digitalWrite (ögon, hög).
digitalWrite (leende, låg);
digitalWrite (ledsen, låg);
digitalWrite (straightface, hög);
digitalWrite (ögonbrynen, låg);
bryta;
Ledsen
fall 4: digitalWrite (ögon, hög).
digitalWrite (leende, låg);
digitalWrite (ledsen, hög);
digitalWrite (straightface, låg);
digitalWrite (ögonbrynen, låg);
bryta;
arg
fall 5: digitalWrite (ögon, hög).
digitalWrite (leende, låg);
digitalWrite (ledsen, hög);
digitalWrite (straightface, hög);
digitalWrite (ögonbrynen, hög);
bryta;
överraskning
mål 6: digitalWrite (ögon, hög).
digitalWrite (leende, hög);
digitalWrite (ledsen, hög);
digitalWrite (straightface, låg);
digitalWrite (ögonbrynen, låg);
bryta;
}
}
OM UTTALANDEN I SPRING UPPREPA
void loop() {
Fotomotstånd
int lightLevel = analogRead(lightPin); Läs den
lightlevel
lightLevel = karta (lightLevel, 900-0, 0, 255);
lightLevel = begränsa (lightLevel, 0, 255); //make säker på att den
värdet är mellan //0 och 255
Serial.println(lightLevel);
Delay(50);
hallValue = analogRead(hallPin);
Serial.println(hallValue);
Delay(50);
potentiometer
sensorValue = analogRead(sensorPin); Läs värdet från sensorn:
outputValue = karta (sensorValue, 0, 1023, 0, 600);
Delay(50);
faceswitch();
IF(outputValue<100) {
Face = 1; extatisk
}
annars om (outputValue > 100 & & outputValue < 200) {
Face = 2; Lycklig
}
annars om (outputValue > 200 & & outputValue < 300) {
Face = 3; rak
}
annars om (outputValue > 300 & & outputValue < 400) {
Face = 4; Ledsen
}
annars om (outputValue > 400 & & outputValue < 500) {
Face = 5; arg
}
annars om (outputValue > 500 & & outputValue < 600) {
Face = 6; överraskning
}
om (lightLevel > 70
){
newOutputValue = map(analogRead(sensorPin), 0, 1023, 0, 600); Läs värdet från sensorn:
newOutputValue = begränsa (newOutputValue, 0, 600);
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
om (ansikte! = 5 & & ansikte! = 6 & & ansikte! = 1) {
ansikte-= 1;
faceswitch();
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
Delay(1000);
}
Serial.println ("ansikte change");
}
om (ansikte == 5) {
ansikte-= 2.
faceswitch();
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
Delay(1000);
}
Serial.println ("change från arga");
}
}
}
om (hallValue < 5) {
newOutputValue = map(analogRead(sensorPin), 0, 1023, 0, 600); Läs värdet från sensorn:
newOutputValue = begränsa (newOutputValue, 0, 600);
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
om (ansikte! = 5 & & ansikte! = 6 & & ansikte! = 1) {
ansikte-= 1;
faceswitch();
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
Delay(1000);
}
Serial.println ("ansikte change");
}
om (ansikte == 5) {
Serial.println ("change från arga");
ansikte-= 2.
faceswitch();
While((ABS(Map(analogRead(sensorPin), 0, 1023, 0, 600)-newOutputValue)) < 50) {
Delay(1000);
}
}
}
}
}