| 안녕하세요! 아두이노로 프로그램을 하나 계획 중인데요... 적외선 센서를 사용하여 온도를 감지하고, 그 온도가 올라가면 스피커를 통해 소리가 작아지고, 온도가 내려가면 스피커를 통해 소리가 커지는 프로그램을 만들고 싶은데요, 이게 아두이노 상으로 구성이 가능한가요??? 현재 일정 온도 이상 되었을 때에 스피커에 소리가 나긴 하지만, 그 소리를 아직 조절을 못하고 있습니다 ㅠ 감사합니다 #include <i2cmaster.h>int speakerPin = 8;
 int LED = 4;
 unsigned long int reg;
 void setup(){Serial.begin(9600);
 Serial.println("Setup...");
 pinMode(LED, OUTPUT);
 pinMode (speakerPin, OUTPUT);
 reg = 0x55aa55aaL;
 i2c_init();
 PORTC = (1 << PORTC4) | (1 << PORTC5);
 }
 void loop(){
 int dev = 0x5A<<1;
 int data_low = 0;
 int data_high = 0;
 int pec = 0;
 
 i2c_start_wait(dev+I2C_WRITE);
 i2c_write(0x07);
 i2c_rep_start(dev+I2C_READ);
 data_low = i2c_readAck();
 data_high = i2c_readAck();
 pec = i2c_readNak();
 i2c_stop();
 double tempFactor = 0.02;
 double tempData = 0x0000;
 int frac;
 tempData = (double)(((data_high & 0x007F) << 8) + data_low);
 tempData = (tempData * tempFactor)-0.01;
 float celcius = tempData - 273.15;
 if (celcius > 35){
 digitalWrite(LED, HIGH);
 int sensorValue = analogRead(A0);
 for(int thresholdvalue=0; sensorValue>thresholdvalue; thresholdvalue--){
 unsigned long int newr;
 unsigned char lobit;
 unsigned char b31, b29, b25, b24;
 b31 = (reg & (1L << 31)) >> 31;
 b29 = (reg & (1L << 29)) >> 29;
 b25 = (reg & (1L << 25)) >> 25;
 b24 = (reg & (1L << 24)) >> 24;
 lobit = b31 ^ b29 ^ b25 ^ b24;
 newr = (reg << 1) | lobit;
 reg = newr;
 digitalWrite (speakerPin, reg & 1);
 delayMicroseconds(5);
 }
 }else{
 digitalWrite(LED, LOW);
 delay(100);
 }
 Serial.println(celcius);
 Serial.println();
 
 }
 |