Étape 4: logiciels
Au lieu d’expliquer l’ensemble du code, nous avons l’intention de se concentrer sur la clé sw qui contrôle les unités de matériel principal utilisées dans ce projet.
1. surveillance de la température
Voici une fonction simple de ce projet qui lit la température du capteur et le convertit en degrés Celsius. L’intel MRAA bibliothèque est utilisée pour interagir avec les e/s analogiques.
flotteur ReadTemperature(mraa::Aio *t)
{
flotteur de résistance = 0.0f ;
flotteur de température = 0.0f ;
int a = t -> read() ;
const int B = 3975 ;
Resistance=(float)(1023-a) * 10000/a ; obtenir la résistance de la sonde ;
température = 1 / (Journal (résistance/10000) /B+1/298.15)-273.15;//convert à la température via la feuille de données ;
Sleep(1) ;
Retour à la température ;
}
2. servo control
Voici un extrait de code dans laquelle nous utilisons le module Intel UPM pour contrôler le servo.
g_servo = new upm::ES08A(3) ;
angle int = 20 ;
cnt int = 0 ;
Ce code un mouvement lent et régulier de servo, tout en se nourrissant de poissons.
Les angles dépendent de l’unité et l’orientation de la mangeoire donc changer ceux-ci au besoin.
Si (g_servo)
{
tandis que (angle < 180)
{
angle = angle == 0? angle = 90:0 ;
g_servo -> setAngle(angle) ;
angle += 170 ;
Sleep(1) ;
}
CNT ++ ;
}
3. GPIO init pour relais
relGpio = new mraa::Gpio(3,true,false) ;
Si (! relGpio)
{
printf ("Impossible de cr├⌐er pin\n numérique") ;
Retourne -1 ;
}
réponse = relGpio -> dir(mraa::DIR_OUT) ;
Si (réponse! = MRAA_SUCCESS)
mraa_result_print((mraa_result_t), MRAA_SUCCESS) ;
Véritable relais commutateur tournant marche/arrêt est effectué par le code ci-dessous :
relGpio -> write(relay_switch) ; 0 = relay_switch_on, 1 = relay_switch_off