Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <EEPROM.h>
- const int slaveSelectPin = 10;
- long int val; // Valor a ser mandado para o pot digital.
- int analog_sensor = A0; // Definindo a Sáida Analogica 0 para a constante analog_sensor
- int sensorValue = 0; // Valor do sensor
- int sensorMin = 1023; // Valor Minimo do Sensor
- int sensorMax = 0; // Valor máximo do Sensor
- int buttonEnter = 2; //Definindo a Entrada Digital 2 para a constante bottonEnter
- int buttonState = 0; //Define o Valor do Estado atual do botão.
- int bclear = 6;
- int aux1, aux2; //Definindo os Auxiliares
- int ledgreen =4; // Definindo o LED para PROTEUS
- int ledyel= 3; // Definindo o LED para PROTEUS
- int addmax = 0; // endereço de escrita na memória
- int addmin = 0; // endereço de escrita na memória
- void setup()
- {
- pinMode (slaveSelectPin, OUTPUT); // SlaveSelect- Seleciona o Escravo como Output
- SPI.begin();
- pinMode(buttonEnter, INPUT);
- pinMode(bclear,INPUT);
- pinMode(ledgreen, OUTPUT);
- pinMode(ledyel, OUTPUT);
- }
- void loop(){
- //----------Lê os valores guardados na EEPROM--------------
- sensorMax = EEPROM.read(addmax);
- sensorMin = EEPROM.read(addmin);
- //------------LEITURA------------
- //Le o pino digital
- buttonState = digitalRead(buttonEnter);
- aux1 = digitalRead(buttonEnter);
- aux2 = digitalRead(bclear);
- // Le o pino analogico
- sensorValue = analogRead(analog_sensor);
- //-------------------------------
- int auxmin = sensorMin;
- int auxmax = sensorMax;
- //-----------Grava os valores na EEPROM----------------
- EEPROM.write(addmax, sensorMax);
- EEPROM.write(addmin, sensorMin);
- // avança para o próximo endereço da EEPROM
- addmax = addmax + 1;
- //-------------------quando atingir o endereço 512 retorna para o endereço 0---------------------------
- if (addmax == 512)
- addmax = 0;
- // avança para o próximo endereço da EEPROM
- addmin = addmin + 1;
- //-------------------quando atingir o endereço 512 retorna para o endereço 0---------------------------
- if (addmin == 512)
- addmin = 0;
- //-----------------------------------------------------------------------------------------------
- //----------------------------------Calibração---------------------------------------------------------
- // aplica as calibrações no sensor e as interpola com os valores para 8bits
- sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
- // no caso do sensor sair fora da escala planejada
- sensorValue = constrain(sensorValue, 0, 255);
- //----------------------------------Posicionamento do POT DIG---------------------------------------------------------
- // atribuindo o valor para a variavel que vai ser enviada para o pot dig.
- val = sensorValue;
- digitalPotWrite(val);
- //----------------------------------Botão---------------------------------------------------------
- switch (aux1){
- case HIGH:
- // grava o valor maximo do sensor
- if (sensorValue > sensorMax) {
- sensorMax = sensorValue;
- }
- // grava o valor minimo do sensor
- if (sensorValue < sensorMin) {
- sensorMin = sensorValue;
- }
- digitalWrite(ledgreen, HIGH);
- break;
- default:
- digitalWrite(ledgreen, LOW);
- digitalWrite(ledyel, LOW);
- }
- //-------------------------------LIMPA A EEPROM-----------------------------------------
- switch (aux2){
- case HIGH:
- digitalWrite(ledyel, HIGH);
- for (int i = 0; i < 512; i++)
- EEPROM.write(i, 0);
- // acenda o LED ao acabar a tarefa
- digitalWrite(ledgreen, HIGH);
- break;
- default:
- digitalWrite(ledgreen, LOW);
- digitalWrite(ledyel, LOW);
- }
- }
- void digitalPotWrite(int value) {
- digitalWrite(slaveSelectPin,LOW);
- SPI.transfer(0x11);
- SPI.transfer(value);
- digitalWrite(slaveSelectPin,HIGH);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement