final lab 6, écran lcd
Dependencies: mbed-rtos mbed mlcd_32pt
testLab6.cpp
- Committer:
- annicksenecal
- Date:
- 2013-12-15
- Revision:
- 4:cb1507dc9dd9
- Parent:
- 3:e3681694d955
File content as of revision 4:cb1507dc9dd9:
// Print messages when the AnalogIn is greater than 50%
#include "mbed.h"
#include "mlcd_32pt.h" //Librairie pour l'écran LCD
#include "Serial.h" //Librairie pour la communication série
#include "rtos.h"
#define ACK 0x06
#define NAK 0x15
#define ON 1
#define OFF 0
#define DEBUT_LIGNE 0
#define BLANC 0xFFFF
#define WIDTH 1
#define HEIGHT 1
#define LIGNE_SUIV 15
AnalogIn ir(p19); //Initialisation de la pin qui reçoit la valeur du capteur infra-rouge
DigitalOut myled(LED4); //Sert surtout au dépannage
DigitalOut myled2(LED2); //Sert surtout au dépannage
DigitalOut myled3(LED3);
Serial terminal (USBTX,USBRX); //pour envoyer au port de communication
int lignes = 0;
bool couleur;
Mutex flag;
unsigned char message[50];
typedef struct {
float gris;
} mail_t;
Mail<mail_t, 16> mail_box;
void lectureCapteur (void const *args) //Lecture du capteur infra-rouge
{
while(true) {
if(ir < .6) {
couleur = false;
sprintf((char*)message,"c'est noir! (%f)\n \r", ir.read());
printf((char*)message);
myled = 1;
Thread::wait(500);
myled = 0;
Thread::wait(500);
} else {
couleur = true;
sprintf((char*)message,"c'est blanc! (%f)\n \r", ir.read());
printf((char*)message);
myled2 = 1;
Thread::wait(500);
myled2 = 0;
Thread::wait(500);
}
}
}
void envoiMessage (void const *args) //Envoi du message sur l'écran avec le Mailbox
{
uint32_t i = 0;
while(1) {
i++; // fake data update
mail_t *mail = mail_box.alloc();
mail->gris = i;
mail_box.put(mail);
drawString(DEBUT_LIGNE, lignes, FONT_8_12, BLANC, WIDTH, HEIGHT, message);
lignes += LIGNE_SUIV;
if (lignes >= 225) {
copier_coller();
lignes -= LIGNE_SUIV;
}
} ;
}
/*void resetEcran (void const *args)
{
if (double_clic()) {
flag.lock();
sprintf((char*)message,"Reset de l'ecran");
drawString(DEBUT_LIGNE, lignes, FONT_8_12, NOIR, WIDTH, HEIGHT, message);
lignes = 0;
}
}
*/
int main()
{
int retour = 0;
int bckground = 0;
// Initialisation de l'écran
init_lcd();
bckground = rgb(213,44,180);
retour = setbgColor(bckground);
if (retour == NAK) {
myled3 = ON;
} else {
sprintf((char*)message,"Lecture du capteur\n\r");
printf("%s", (char*)message);
drawString(DEBUT_LIGNE, lignes, FONT_8_12, BLANC, WIDTH, HEIGHT, message);
lignes += LIGNE_SUIV;
}
//boucle avec les threads
Thread thread(lectureCapteur);
Thread thread1(envoiMessage);
//Thread thread2(resetEcran);
while(true) {
osEvent evt = mail_box.get();
if (evt.status == osEventMail) {
mail_t *mail = (mail_t*)evt.value.p;
printf("Valeur du gris", mail->gris);
mail_box.free(mail);
};
}
}