You are on page 1of 2

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <stdint.h> #include <wiringPiSPI.h> #include <wiringPi.

h> float temperatura=0; float referencia=25; char men='M'; int elec=0,rele=0; int analogRead(int pin){ int ADC=-1; if((pin>=0)&&(pin<=7)){ int ce = 0; unsigned char ByteSPI[7]; // Cargamos los datos ByteSPI[0] = 0b01;//El ultimo bit es el start ByteSPI[1]=(0x80)|(pin<<4);//4 primeros bits configuracion ver tabla ByteSPI[2]=0;//Byte donde nos escriben los 8 ultimos bits. wiringPiSPIDataRW (ce, ByteSPI, 3);//Enviamos la trama usleep(20);//Esperamos 20 microsegundos ADC=((ByteSPI[1]&0x03)<<8)|ByteSPI[2];//Tratamos los datos } return (ADC); } float tempRead(){ return((float)analogRead(0)*(3.3/1023)*100-273); } void Manual(){ printf("\nON (1)"); printf("\nOFF(0)"); scanf("%d",&rele); } void Automatico(){ printf("\nIntroduzca referencia:"); scanf("%f",&referencia); } void Menu(){ printf("\n Manual(M)"); printf("\n Automatico(A)"); printf("\n Exit(E)"); printf("\n---- Temperatura %f",temperatura); printf("\n---- Referencia %f",referencia); printf("\n---- Rele %d",rele); printf("\n Modo:"); if(elec)printf("Automatico"); else printf("Manual"); printf("\n\n"); scanf("%c",&men);

if(men=='M'){ elec=0; Manual(); } else if(men=='A') { Automatico(); elec=1;} else if(men=='E')elec=3; } int main (void) { int i,analog ; printf ("Tutorial ADC Raspberry www.electroensaimada.com\n") ; system("gpio load spi"); wiringPiSetup(); if (wiringPiSPISetup (0, 500000) < 0)//Definimos la conexion A 0.5 MHz { fprintf (stderr, "Unable to open SPI device 0: %s\n", strerror (errno)) ; exit (1) ; } pinMode(1,OUTPUT); while(elec!=3){ delay(100); system("clear"); temperatura=tempRead(); Menu(); digitalWrite(1,rele); } printf("\nCerrando programa\n"); delay(1000); return (0); }

You might also like