라즈베리파이 CDS 조도센서 코드
- 코딩/Raspberry Pi (c)
- 2019. 11. 20.
라즈베리파이 CDS 조도센서 코드 1
#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiSPI.h>
#define CS_ADC 7
#define SPI_CHANNEL 0
#define SPI_SPEED 1000000
int adcRead(char adcChannel)
{
char buff[3];
int adcValue = 0;
buff[0] = 0x06 |((adcChannel & 0x07)>>2);
buff[1] = ((adcChannel &0x07)<<6);
buff[2] = 0x00;
digitalWrite(CS_ADC,LOW);
wiringPiSPIDataRW(SPI_CHANNEL, buff, 3);
buff[1] = 0x0F & buff[1];
adcValue = (buff[1] <<8) | buff[2];
digitalWrite(CS_ADC,HIGH);
return adcValue;
}
int main(void)
{
int adcValue_CDS = 0;
wiringPiSetupGpio();
if(wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED) <0)
{
return -1;
}
pinMode(CS_ADC, OUTPUT);
while(1)
{
adcValue_CDS = adcRead(0);
printf("CDS = %u\n",adcValue_CDS);
delay(1000);
}
return 0;
}
라즈베리파이 CDS 조도센서 코드 2
#include <stdio.h>
#include <wiringPi.h>
#include <wiringPiSPI.h>
#include <wiringPiI2C.h>
#define CS_ADC 7
#define SPI_CHANNEL 0
#define SPI_SPEED 1000000
#define LED_I2C_ADDR 0x20
#define OUT_PORT1 0x03
#define CONFIG_PORT1 0x07
const int aLedData[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
int fd;
int adcRead(char adcChannel)
{
char buff[3];
int adcValue = 0;
buff[0] = 0x06 |((adcChannel &0x07) >>2);
buff[1] = ((adcChannel & 0x07)<<6);
buff[2] = 0x00;
digitalWrite(CS_ADC, LOW);
wiringPiSPIDataRW(SPI_CHANNEL, buff, 3);
buff[1] = 0x0F & buff[1];
adcValue = (buff[1] <<8 | buff[2]);
digitalWrite(CS_ADC,HIGH);
return adcValue;
}
void ledOnByRange(int x, int min, int max, int ledNo)
{
int i;
int data = 0;
if(x<max && x>=min)
{
for(i=0; i<ledNo; i++)
{
data = aLedData[i] |data;
}
wiringPiI2CWriteReg16(fd, OUT_PORT1, data);
}
}
int main(void)
{
int adcValue_CDS = 0;
wiringPiSetupGpio();
if(wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED) <0)
{
return -1;
}
if((fd = wiringPiI2CSetup(LED_I2C_ADDR)) <0)
{
return -1;
}
pinMode(CS_ADC, OUTPUT);
wiringPiI2CWriteReg16(fd, CONFIG_PORT1, 0x0000);
while(1)
{
adcValue_CDS = adcRead(0);
printf("CDS = %u\n", adcValue_CDS);
delay(100);
ledOnByRange(adcValue_CDS, 3700, 4000, 8);
ledOnByRange(adcValue_CDS, 3200, 3700, 4);
ledOnByRange(adcValue_CDS, 900, 3200, 1);
ledOnByRange(adcValue_CDS, 0,900,0);
}
return 0;
}
'코딩 > Raspberry Pi (c)' 카테고리의 다른 글
라즈베리파이 EEPROM 메모리 사용하기 (0) | 2019.11.21 |
---|---|
라즈베리파이 TEMP HUMI 온도 습도 코드 (0) | 2019.11.20 |
라즈베리파이 gpio 제어 코드 (0) | 2019.11.20 |
라즈베리파이 LED 코드 (0) | 2019.11.19 |
라즈베리파이 스텝모터 (STEP MOTER)소스코드 (0) | 2019.11.19 |