Étape 4: Compiler le code et le télécharger vers le MSP430
Le code est affiché ci-dessous. Il suffit de compiler le code et la programmer pour le microcontrôleur
----------------------------------------------------------------------------------------------------------------.
#define lire 0 x 01
int count = 0 ;
int rval pointe ;
dval int ;
int dvaltemp = 1 ;
exécute int = 0 ;
int dvalcount = 0 ;
const int pingPin = P2_6 ;
const int pingReceive = P2_1 ;
const int m1 = P2_3 ;
const int m2 = P2_4 ;
const int sb = P1_5 ;
const int sr = P1_3 ;
const int ledpin = P2_5 ;
int rfidtagclose = 0 ;
int close = 0 ;
long countt = 0 ;
ouvert int = 0 ;
longue durée ;
pouces de longs ;
cm de long ;
int rfidtag = 0 ;
temp int = 0 ;
int bowlopencnt = 0 ;
char btread = « A » ;
void setup()
{
Serial.Begin(9600) ;
pinMode (sb, sortie) ;
pinMode (sr, sortie) ;
digitalWrite (sb, faible) ;
digitalWrite (sr, faible) ;
pinMode (m1, sortie) ;
pinMode (m2, sortie) ;
pinMode (ledpin, sortie) ;
pinMode (GREEN_LED, sortie) ;
}
void loop()
{
Si (compter 40 <)
{
digitalWrite (sr, HIGH) ;
Serial.Print("!RW") ;
Serial.Write(Byte(Read)) ;
Serial.Write(Byte(32)) ;
if(Serial.available() > 0)
{
rval pointe = Serial.read() ;
Si (rval pointe! = 1)
{suppressAll();}
}
if(Serial.available() > 0) {}
rval pointe = Serial.read() ;
Serial.Print("1st:") ;
Serial.println(rval) ;
}
if(Serial.available() > 0) {}
rval pointe = Serial.read() ;
Serial.Print("2nd:") ;
Serial.println(rval) ;
if(rval == 149)
{
rfidtag = 0 ;
}
}
if(Serial.available() > 0) {}
rval pointe = Serial.read() ;
Serial.Print("3rd:") ;
Serial.println (rval pointe, HEX) ;
}
if(Serial.available() > 0) {}
rval pointe = Serial.read() ;
Serial.Print("4th:") ;
Serial.println (rval pointe, HEX) ;
Serial.println("---") ;
}
Delay(3) ;
retard (11) ;
}
d’autre
{
digitalWrite (sr, faible) ;
}
Si (comte > 45)
{
digitalWrite (sb, HIGH) ;
Delay(10) ;
Temp = Serial.read() ;
Serial.println(temp) ;
Si (temp == 65 || temp == 66 || temp == 67)
{
btread = temp ;
Serial.println(btread) ;
}
pinMode (pingPin, sortie) ;
digitalWrite (pingPin, basse) ;
delayMicroseconds(2) ;
digitalWrite (pingPin, HIGH) ;
delayMicroseconds(5) ;
digitalWrite (pingPin, basse) ;
pinMode (pingReceive, entrée) ;
durée = pulseIn (pingReceive, HIGH) ;
dvaltemp = Inches(duration) ;
Serial.println(dval) ;
Delay(10) ;
Si (dvaltemp < 15 & & dvaltemp > 0)
{
dvalcount = 0 ;
}
}
d’autre
{
digitalWrite (sb, faible) ;
}
Count ++ ;
Si (compter > 55)
{
Count = 0 ;
}
Si ((btread == « A » & & dval == 1 & & rfidtagclose == 0) || btread == « C »)
{
bowlopencnt = 0 ;
}
if(bowlopencnt<5)
{
digitalWrite (m2, haut) ;
digitalWrite (m1, faible) ;
digitalWrite (ledpin, HIGH) ;
}
d’autre
{
digitalWrite (ledpin, basse) ;
digitalWrite (m1, HIGH) ;
digitalWrite (m2, faible) ;
}
dvalcount ++ ;
if(dvalcount <250)
{
dval = 1 ;
}
d’autre
{
dval = 0 ;
}
Si (dvalcount > 300)
{
dvalcount = 295 ;
}
bowlopencnt ++ ;
if(bowlopencnt>30)
{
bowlopencnt = 20 ;
}
rfidtag ++ ;
if(rfidtag < 250)
{
rfidtagclose = 1 ;
dvalcount = 290 ;
}
d’autre
{
rfidtagclose = 0 ;
}
Si (rfidtag > 300)
{
rfidtag = 310 ;
}
Delay(3) ;
Serial.println(dvaltemp) ;
}
long Inches(long microseconds)
{
calcul de la vitesse du son
retourner les microsecondes / 74 / 2 ;
}
Sub suppressAll()
{
if(Serial.available() > 0)
{Serial.read() ;
suppressAll() ;
}
}
------------------------------------------------------------------------------------------------------------
Ce code peut être optimisé pour l’application souhaitée.