Arduino Mechanotronic människors smärta Reflex (5 / 6 steg)
Steg 5: Bygga din ryggmärgen och den Arduino-kod
Fritzing diagrammet ovan information delar och anslutningar behövs till krok upp våra temperaturgivare och magnetventiler på "ryggmärgen," hjärnor (pun intended) av vårt system. Det 12 volt NiMH-batteri frågetjänster bakbord och SparkFun RedBoard inne i rutan project. Temperaturgivaren är inte ligger på en skärbräda som Fritzing figur, men är kopplad till skelett hand som visas i 3: e bilden ovan. Detta gör att lågan ska användas nära handen bästa simulera den temperatur smärta reflexen.
Koden jag använde är inklippt nedan. Det är inte den mest eleganta lösningen (t.ex. jag använde dröjsmål i stället för millis för att hålla det enkelt), men det fungerar:
CONST int highSolenoid = 7. ingång från högt tryck regulator/magnetventilen combo
CONST int lowSolenoid = 8; ingång från lågt tryck regulator/magnetventilen combo
CONST int releaseSolenoid = 4; magnetventil att släppa luft från bicep
CONST int tempPin = A0;
int sensorValue;
int tempF;
void setup() {
pinMode (highSolenoid, produktionen);
pinMode (lowSolenoid, produktionen);
pinMode (releaseSolenoid, produktionen);
Serial.BEGIN(9600);
}
void loop()
{
sensorValue = analogRead(tempPin); Läs tryckgivare
int tempF = ((sensorValue * 4.887585532746823)/10);
Serial.Print(sensorValue);
Serial.Print ("Temp");
Serial.println (tempF, DEC);
Delay(250);
om (tempF > 85)
{
digitalWrite (lowSolenoid, låg);
fördröjning (100);
digitalWrite (releaseSolenoid, hög); Öppna release magnetventil så bicep kan vara kontrakterade digitalWrite (highSolenoid, hög); om temp går över 85F, öppnas den höga magnetventilen, simulera bicep kontraktion och snabb och borttagning
fördröjning (5000);
digitalWrite (highSolenoid, låg); stoppa bicep kontraktion
fördröjning (1000); ger tid för luft från bicep
digitalWrite (releaseSolenoid, låg);
fördröjning (100); dags för release magnetventil att stänga innan du aktiverar tonic biceps/triceps kontraktion igen
digitalWrite (lowSolenoid, hög);
fördröjning (8000);
}
annat
{
digitalWrite (lowSolenoid, hög);
digitalWrite (highSolenoid, låg);
}}