| #include <iostream> |
| #include <unistd.h> |
| #include "mcp9808.h" |
| |
| #include "mraa.hpp" |
| |
| int main() |
| { |
| using namespace std; |
| |
| //! [Interesting] |
| int command; |
| upm::MCP9808 *temp = new upm::MCP9808(6); |
| |
| do |
| { |
| cout << endl; |
| cout << "1 - read temp \t" ; |
| cout << "2 - sleep mode \t"; |
| cout << "3 - wake up" << endl; |
| cout << "4 - set mode to " << (temp->isCelsius() == true ? "Fahrenheit" : "Celcius") << endl; |
| cout << "5 - show status bits" << endl; |
| cout << "6 - Set Tcrit \t" ; |
| cout << "7 - Set Tupper \t" ; |
| cout << "8 - Set Tlower " << endl; |
| cout << "9 - Display monitor temps " << endl; |
| cout << "10 - Enable alert default\t"; |
| cout << "11 - Enable alert interrupt" << endl; |
| cout << "12 - Clear interrupt \t" ; |
| cout << "13 - Clear alert mode" << endl; |
| cout << "14 - Get Hysteresis\t"; |
| cout << "15 - Set Hysteresis" << endl; |
| cout << "16 - Get Resolution\t"; |
| cout << "17 - Set Resolution" << endl; |
| cout << "18 - Get Manufacturer ID"<< endl; |
| cout << "19 - Get Device ID" << endl; |
| cout << "-1 - exit" << endl; |
| cout << "Enter a command: "; |
| cin >> command; |
| |
| switch(command) |
| { |
| float t; |
| case 1: |
| std::cout << "Temp: " << temp->getTemp() << "° " << (temp->isCelsius()? "Celsius" : "Fahrenheit")<< std::endl; |
| break; |
| case 2: |
| cout << "shutdown sensor (sleep mode)" << endl; |
| temp->shutDown(); |
| break; |
| case 3: |
| cout << "wake up sensor" << endl; |
| temp->shutDown(false); |
| break; |
| case 4: |
| cout << "set mode to " << (temp->isCelsius() ? "Fahrenheit" : "Celcius") << endl; |
| temp->setMode(!temp->isCelsius()); |
| break; |
| case 5: |
| cout << "Tcrit = " << temp->isTcrit(); |
| cout << " Tupper = " << temp->isTupper(); |
| cout << " Tlower = " << temp->isTlower(); |
| break; |
| case 6: |
| cout << "enter a value"; |
| cin >> t; |
| temp->setMonitorReg(temp->CRIT_TEMP, t); |
| break; |
| case 7: |
| cout << "enter a value"; |
| cin >> t; |
| temp->setMonitorReg(temp->UPPER_TEMP, t); |
| break; |
| case 8: |
| cout << "enter a value"; |
| cin >> t; |
| temp->setMonitorReg(temp->LOWER_TEMP, t); |
| break; |
| case 9: |
| cout << "tcrit = " << temp->getMonitorReg(temp->CRIT_TEMP) << endl; |
| cout << "tupper = " << temp->getMonitorReg(temp->UPPER_TEMP) << endl; |
| cout << "tlower = " << temp->getMonitorReg(temp->LOWER_TEMP) << endl; |
| break; |
| case 10: |
| cout << "set alert mode default" ; |
| temp->setAlertMode(temp->ALERTCTRL); |
| break; |
| case 11: |
| cout << "set alert mode interrupt"; |
| temp->setAlertMode(temp->ALERTMODE | temp->ALERTCTRL ); |
| break; |
| case 12: |
| temp->clearInterrupt(); |
| break; |
| case 13: |
| cout << "Clear alerts" << endl; |
| temp->clearAlertMode(); |
| break; |
| case 14: |
| cout << "Hysteresis: " << temp->getHysteresis() << endl; |
| break; |
| case 15: |
| int u; |
| cout << "enter 1 to 4"; |
| cin >> u ; |
| switch(u) |
| { |
| case 1: |
| temp->setHysteresis(temp->HYST_0); |
| break; |
| case 2: |
| temp->setHysteresis(temp->HYST_1_5); |
| break; |
| case 3: |
| temp->setHysteresis(temp->HYST_3_0); |
| break; |
| case 4: |
| default: |
| temp->setHysteresis(temp->HYST_6_0); |
| break; |
| } |
| break; |
| case 16: |
| cout << "Resolution: " << temp->getResolution() << endl; |
| break; |
| case 17: |
| int v; |
| cout << "enter 1 to 4"; |
| cin >> v ; |
| switch(v) |
| { |
| case 1: |
| temp->setResolution(temp->RES_LOW); |
| break; |
| case 2: |
| temp->setResolution(temp->RES_MEDIUM); |
| break; |
| case 3: |
| temp->setResolution(temp->RES_HIGH); |
| break; |
| case 4: |
| default: |
| temp->setResolution(temp->RES_PRECISION); |
| break; |
| } |
| break; |
| case 18: |
| cout << "Manufacturer ID: " << std::hex << temp->getManufacturer() << endl; |
| break; |
| case 19: |
| cout << "Get device ID: " << std::hex << temp->getDevicedId() << endl; |
| break; |
| case -1: |
| break; |
| default: |
| cout << endl << "That option is not available. Try again" << endl; |
| break; |
| } |
| |
| }while (command != -1 ); |
| //! [Interesting] |
| return MRAA_SUCCESS; |
| } |