라즈베리파이 CDS 조도센서 코드

라즈베리파이 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;
}

댓글

Designed by JB FACTORY

1 2 3 4 5 6 7 8 1 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10