Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <EEPROM.h>
- #define sensorPin A0
- #define mesMaxLenght 32
- #define nrMessages 10
- const int redPin = 3;
- const int greenPin = 5;
- const int bluePin = 6;
- int id;
- int messagePoz;
- int sensorPin1 = 4;
- int sensorValue1 = 0; // variable to store the value coming from the sensor
- byte value;
- int lastSent=0;
- char message[mesMaxLenght];
- String mesaj;
- int eeAddress = 0; //Location we want the data to be put.
- unsigned int numar_CAN;
- int voltageValue, temperatureRead;
- void setup() {
- Serial.begin(9600);
- pinMode(LED_BUILTIN, OUTPUT);
- pinMode(redPin, OUTPUT);
- pinMode(greenPin, OUTPUT);
- pinMode(bluePin, OUTPUT);
- EEPROM.get(mesMaxLenght * (nrMessages - 1), messagePoz); // luam pozitia la care am ajuns ultima data asta e o frmula matematica
- eeAddress = messagePoz * mesMaxLenght ; // aflam adresa din eeprom la care trebuie sa prelucram
- }
- void displayMes(){
- int eeAddress = 0;
- while(eeAddress < mesMaxLenght * nrMessages){
- EEPROM.get(eeAddress, message);
- if(message[0] == '\0') return; // daca nu este salvat nimic la adresa parasim functia
- Serial.println(message);
- eeAddress += mesMaxLenght;
- }
- }
- void RGB(){
- int red = Serial.parseInt();
- int green = Serial.parseInt();
- int blue = Serial.parseInt();
- analogWrite(redPin, red);
- analogWrite(greenPin, green);
- analogWrite(bluePin, blue);
- Serial.print(red, HEX);
- Serial.print(green, HEX);
- Serial.println(blue, HEX);
- }
- void turnLed(){
- while(Serial.available() < 1) delay(1);// asteptams a se trimita date
- int buffer = Serial.read();
- while( buffer == 32) buffer = Serial.read(); // pentru a evita punctele albe
- if( buffer > 96) buffer -= 32; // aici e transformare din litera mica in mare ca sa puteti introduce si a, si A
- if(buffer == 'A')
- digitalWrite(LED_BUILTIN, HIGH);
- else if(buffer == 'S')
- digitalWrite(LED_BUILTIN, LOW);
- else Serial.println("Valoare invalida");
- while(Serial.available())buffer = Serial.read();// golim buffer
- }
- void temp(){
- while(1){
- if(millis() >= lastSent +1000){
- // Get the voltage reading from the LM35
- int reading = analogRead(sensorPin);
- // Convert that reading into voltage
- float voltage = reading * (5.0 / 1024.0);
- // Convert the voltage into the temperature in Celsius
- float temperatureC = voltage * 100;
- // Print the temperature in Celsius
- Serial.print("Temperature: ");
- Serial.print(temperatureC);
- Serial.print("\xC2\xB0"); // shows degree symbol
- Serial.print("C | ");
- lastSent = millis();
- }
- }
- }
- void readEEPROM(){
- Serial.println("Introduceti mesaj: ");
- while(Serial.available() < 1) delay(1); // asteptam introdcere de mesaj
- mesaj = Serial.readString();
- mesaj.toCharArray(message, mesMaxLenght);
- EEPROM.put(eeAddress, message);
- eeAddress += mesMaxLenght;
- messagePoz++;
- if(messagePoz == nrMessages)
- {
- messagePoz = 0;
- eeAddress = 0;
- }
- EEPROM.put(mesMaxLenght * (nrMessages - 1), messagePoz);
- Serial.println("Mesaj salvate in EEPROM: ");
- displayMes();
- }
- void loop() {
- if (Serial.available()){
- id = Serial.parseInt();
- switch(id){
- case 1: turnLed();
- break;
- case 2: RGB();
- break;
- case 3: temp();
- break;
- case 4:
- while(1)
- {
- // read the value from the sensor:
- sensorValue1 = digitalRead(sensorPin1);
- Serial.println(sensorValue1);
- }
- break;
- case 5:
- readEEPROM();
- break;
- default:
- Serial.println("Valoare invalida");
- break;
- }
- }
- delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement