Bygga ett exoskelett för Google Science Fair (5 / 8 steg)
Steg 5: kod
Kod:
/*
Google Science Fair inträde: Exoskeletal vapen med Artifitial muskel
Denna kod kommer att krympa en artifitial muskel när en knapp trycks. Det skapar en en sekund
pulser för att hålla tråden från över värme, om det var leverans en konstant ström kabeln skulle överhettas
och skulle antingen smälta sig, smälta muskeln eller förstöra batteriet. Detta skulle inte vara mycket bra
för användaren.
Det finns fyra muskler och två knappar.
Krets:
* mosfetA gate pin(muscleA) på stift 12
* mosfetB gate pin(MuscleB) på stift 13
* mosfetC gate pin(MuscleC) på pin 2
* mosfetD gate pin(MuscleD) på stift 7
* buttonA bifogas stift 9 och 5V
* buttonB attavhed till stift 4 och + 5v
* 10 k ohm motstånd bifogas stift 9 och marken
* 10 k ohm motstånd bifogas stift 4 och marken
* anteckningar:
-muskler ues värma avtalsrättsliga
-mosfets kör på 6 och 12 beroende på resultatet av ekvationen
-ståltråd används för att värma musklerna
skapade 2015
av Anders B-L för Google vetenskap Fair 2015
Senast redigerad 3/17/2015
*/
konstant heltal
CONST int buttonA = 9. //pin 9 kallas nu buttonA
CONST int buttonB = 4; //pin 4 kallas nu buttonB
CONST int muscleA = 12. //pin 12 kallas nu muscleA
CONST int muscleB = 13. //pin 13 kallas nu muscleB
CONST int muscleC = 2. //pin 2 kallas nu muscleC
CONST int muskulös = 7; //pin 7 kallas nu muscleD
heltal
int buttonStateA = 0; //buttonStateA är nu lika med noll
int buttonStateB = 0; //buttonStateB är nu lika med noll
där du deklarera alla dina vriables
void setup() {
utgångar
pinMode (muscleA, produktionen); //declares muscleA en utgång
pinMode (muscleB, produktionen); //declares muscleB en utgång
pinMode (muscleC, produktionen); //declares muscleC en utgång
pinMode (muskulösa, produktionen); //declares muskulösa en utgång
ingångar
pinMode (buttonA, ingång); förklarar buttonA som indata
pinMode (buttonB, ingång), //declares buttonB som indata
}
skapar en upprepande loop
void loop() {
Läs statligt av knappen
{buttonStateA = digitalRead(buttonA);
det kontrollerar status för knappen
Om knappen trycks, muscleA komprimerar och muscleB kommer att lossa
om (buttonStateA == hög) {
muscleA är på, muscleB är avstängd
digitalWrite (muscleA, hög);
digitalWrite (muscleB, låg);
fördröjning (1000); //pause i 1 sekund
digitalWrite (muscleA, låg);
digitalWrite (muscleB, låg);
Delay(100); / / paus för 100 millisekunder
}
Om knappen inte är intryckt, muscleB komprimerar och muscleA kommer att lossa
annat {
muscleA är avstängd, muscleB är på
digitalWrite (muscleA, låg);
digitalWrite (muscleB, hög);
fördröjning (1000); //pause i 1 sekund
digitalWrite (muscleA, låg);
digitalWrite (muscleB, låg);
Delay(100); / / paus för 100 millisekunder
}
}
gör samma sak som den första delen, bara med den andra armen
{buttonStateB = digitalRead(buttonB);
om (buttonStateB == hög) {
digitalWrite (muscleC, hög);
digitalWrite (muscleD, låg);
fördröjning (1000); //pause i 1 sekund
digitalWrite (muscleC, låg);
digitalWrite (muscleD, låg);
Delay(100); / / paus för 100 millisekunder
}
annat {
digitalWrite (muscleC, låg);
digitalWrite (muskulösa, högt);
fördröjning (1000); //pause i 1 sekund
digitalWrite (muscleC, låg);
digitalWrite (muscleD, låg);
Delay(100); paus för 100 millisekunder
}
}
} //closes skript
Följande kod skrivs i Arduino C/C++, används för att kontrollera musklerna. Att förklara vad som händer med Arduino analfabeter, muskeln i botten av armen skickas 1 sekund pulser till hålla ståltråd på 150 degrees(f). om användarna beväpna hissar sedan en knapp trycks orsakar nedre muskeln att stoppa avtalsslutande och översta muskel att börja ta emot dessa 1 sekund pulser således avtalsslutande och flyttar med armen att hjälpa användaren lyfta föremål. Denna kod skrivs till arbeta med två armar (fyra muskler) och två knappar.