Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 EthernetInterface LM75B mbed-rtos mbed
Fork of app-board-LM75B by
IOController.cpp
- Committer:
- gimohd
- Date:
- 2017-05-09
- Revision:
- 7:0618a1e407d0
- Parent:
- 6:77a4c45f6416
File content as of revision 7:0618a1e407d0:
#include "IOController.h"
IOController::IOController()
{
printf("-------------STARTING PROGRAM------------\r\n");
printf("-----------------------------------------\r\n");
//INPUT
temperatureSensor = new TemperatureSensor(p28, p27);
potentiometer = new Potentiometer(p19);
joystick = new Joystick(p15,p12,p13,p16,p14);
//OUTPUT
speaker = new Speaker(p26);
rgbLed = new RGB(p23,p24,p25);
lcd = new LCD(p5, p7, p6, p8, p11);
destinationID = 114;
//ETHERNET
//communication = new Communication();
receivePacket = new Packet();
/*
std::vector<uint8_t> IDN;
IDN.push_back(110);
IDN.push_back(113);
std::vector<int16_t> TMP;
TMP.push_back(temperatureSensor->temp_short());
TMP.push_back(temperatureSensor->temp_short());
receivePacket = new Packet(2, 111, 240, IDN , TMP);
printf("Packet 1 :'%s'\r\n",receivePacket->toDataString().c_str());
receivePacket2 = new Packet();
receivePacket2->dataInput(receivePacket->toDataString());
printf("Packet 2 :'%s'\r\n",receivePacket2->toDataString().c_str());
std::string str = receivePacket->toDataString();
for (int i =0; i<str.size();i++){
printf("char i: %c\r\n",str[i]);
}
float s =temperatureSensor->average(TMP);
printf("average: %f",s);
*/
startReceiving = false;
rgbLed->off();
}
IOController::~IOController()
{
delete temperatureSensor;
delete potentiometer;
delete joystick;
delete speaker;
delete rgbLed;
delete lcd;
delete receivePacket;
delete communication;
}
int IOController::run()
{
Joystick::Direction direction = joystick-> getDirection();//get direction input
switch(direction) {
case Joystick::UP: {
lcd->cls();
lcd->locate(0,3);
lcd->printf("Receiving mode");
communication = new Communication();
communication->connect();
startReceiving = true;
break;
}
case Joystick::DOWN: {
/*float temperature = temperatureSensor->read();
lcd->cls();
lcd->locate(0,3);
lcd->printf("Temp = %.3f\n", temperature);
*/
rgbLed->setRgbColor(potentiometer->readValue());
std::string test;
//12, 101, 1, 8, 230, 1, 105
char ca[] = {0xAA,0x00,0xFF,0x55};
for (int i = 0; i<sizeof(ca);i++){
test.push_back(ca[i]);
}
char c = receivePacket->crc(test,0);
lcd->cls();
lcd->locate(0,3);
lcd->printf("Dest. ID= %d\n", c);
break;
}
case Joystick::RIGHT: {
destinationID = (destinationID < 117) ? destinationID+1 : destinationID;
lcd->cls();
lcd->locate(0,3);
lcd->printf("Dest. ID= %d\n", destinationID);
wait_ms(300);
break;
}
case Joystick::LEFT: {
destinationID = (destinationID > 100) ? destinationID-1 : destinationID;
lcd->cls();
lcd->locate(0,3);
lcd->printf("Dest ID= %d\n", destinationID);
wait_ms(300);
break;
}
case Joystick::MIDDLE: {
communication = new Communication();
communication->setOwnID(114);
communication->connect();
destinationID = 113;
receivePacket->addValues(receivePacket->getNUM(),destinationID,potentiometer->readValue(), communication->getOwnID() ,temperatureSensor->temp_short());
lcd->cls();
lcd->locate(0,3);
lcd->printf("Sending to %d\n", destinationID);
communication->sendDataPacket(receivePacket->toDataString());
startReceiving = true;
wait_ms(500);
break;
}
default: {
if(startReceiving) {
std::string buf;
//get data from other mbed
buf = communication->getData();
//info into Packet
receivePacket->dataInput(buf);
//Set color
rgbLed->setRgbColor(receivePacket->getPWM());
//Set speaker
speaker->play(receivePacket->getNUM());
//Average temperature on LCD
lcd->cls();
lcd->locate(0,3);
float s =temperatureSensor->average(receivePacket->getTMP());
lcd->printf("Average %f\n", s);
if (!receivePacket->idCheck(communication->getOwnID()) || !receivePacket->crcCheck()){
lcd->printf("GAME OVER\n", s);
return -1;
}
//change packet to data
receivePacket->addValues(receivePacket->getNUM(),destinationID,potentiometer->readValue(), communication->getOwnID() ,temperatureSensor->temp_short());
//sending data to next
communication->sendDataPacket(receivePacket->toDataString());
wait_ms(110);
break;
}
}
}
return 1;
}
