作者:邓帅哥
组装图/运行图+应用程序/源码demo,
将libfordeng解压后放到arduino编译器的lib...文件下
接下来copy下面所述的arduino当中(建议使用0022版本)
注意蓝牙模块先别安装上去(如果你能确定蓝牙模块没有占到你下载程序的端口,你可以先装上)
由于晚上要陪老婆,时间关系,就不上图了
安装方法,直接看下面组装图
接线方法,看arduino中的定义,我就不上图了。
next:
见运行图片中两个应用程序的apk需要安装在你的android设备上面,
最后,,,,,最后,还是那句话,不要崇拜哥,哥为人民服务,句号(深藏功与名)
///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////
组装图+app运行图片
///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////
- /*
- arduino源码
- author: Joel- Deng -2012.6.3
- */
- #include <MeetAndroid.h>
- #include <OneWire.h>
- OneWire ds(12); // ds18b20 pin #2 (middle pin) to Arduino pin 12
- MeetAndroid meetAndroid;
- int blueLed = 11;
- int touchswitch =14;
- int tempred = 15;
- int tempgreen = 16;
- int tempblue =17;
- int re =2;
- int re1 =3;
- int re2 =4;
- int re3 =5;
- int re4 =6;
- int val;
- int ad;
- int onboardLed = 10;
- int mytemp;
- void setup()
- {
- // use the baud rate your bluetooth module is configured to
- // not all baud rates are working well, i.e. ATMEGA168 works best with 57600
- Serial.begin(57600);
- // register callback functions, which will be called when an associated event occurs.
- meetAndroid.registerFunction(red, 'o');
- meetAndroid.registerFunction(green, 'p');
- meetAndroid.registerFunction(blue, 'q');
- meetAndroid.registerFunction(flow, 'a');
- meetAndroid.registerFunction(flow1, 'f');
- pinMode(onboardLed, OUTPUT);
- // set all color leds as output pins
- // pinMode(redLed, OUTPUT);
- // pinMode(greenLed, OUTPUT);
- pinMode(blueLed, OUTPUT);
- pinMode(re, OUTPUT);
- pinMode(re1, OUTPUT);
- pinMode(re2, OUTPUT);
- pinMode(re3, OUTPUT);
- pinMode(re4, OUTPUT);
- pinMode(tempgreen,OUTPUT);
- pinMode(tempred,OUTPUT);
- pinMode(tempblue,OUTPUT);
- pinMode(touchswitch,INPUT);
- // just set all leds to high so that we see they are working well
- // digitalWrite(redLed, HIGH);
- // digitalWrite(greenLed, HIGH);
- digitalWrite(blueLed, HIGH);
- digitalWrite(re, LOW);
- digitalWrite(re1, HIGH);
- digitalWrite(re2, HIGH);
- digitalWrite(re3, HIGH);
- digitalWrite(re4, HIGH);
- digitalWrite(onboardLed, HIGH);
- digitalWrite(tempgreen, HIGH);
- digitalWrite(tempred, HIGH);
- digitalWrite(tempblue, HIGH);
- digitalWrite(touchswitch,HIGH);
- val = meetAndroid.getInt();
- }
- int Temp;
- void getTemp(void) {
- byte i;
- byte present = 0;
- byte data[12];
- byte addr[8];
- if ( !ds.search(addr)) {
- // Serial.print("No more addresses.\n");
- ds.reset_search();
- return;
- }
- ds.reset();
- ds.select(addr);
- ds.write(0x44,1); // start conversion, with parasite power on at the end
- delay(20); // maybe 750ms is enough, maybe not
- // we might do a ds.depower() here, but the reset will take care of it.
- present = ds.reset();
- ds.select(addr);
- ds.write(0xBE); // Read Scratchpad
- // Serial.print("P=");
- // Serial.print(present,HEX);
- // Serial.print(" ");
- for ( i = 0; i < 9; i++) { // we need 9 bytes
- data[i] = ds.read();
- // Serial.print(data[i], HEX);
- // Serial.print(" ");
- }
- Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature
- Temp=Temp>>4;//divide by 16 to get pure celcius readout
- //next line is Fahrenheit conversion
- // Temp=Temp*1.5; // comment this line out to get celcius
- // Serial.print("T=");//output the temperature to serial port
- // Serial.print(Temp);
- // Serial.print(" ");
- // Serial.print(" CRC=");
- // Serial.print( OneWire::crc8( data, 8), HEX);
- // Serial.println();
- }
- void loop()
- {
- // digitalWrite(touchswitch,HIGH);
- meetAndroid.receive();
- // you need to keep this in your loop() to receive events
- getTemp();
- //uint16_t data = Temp;
- meetAndroid.send(Temp);
- touch();
- tempdisplay();
- delay(100);//the delay is very importent
- }
- /*
- * Whenever the multicolor lamp app changes the red value
- * this function will be called
- */
- /* tempdisplay led red green blue */
- void tempdisplay(void)
- {
- mytemp =Temp;
- if((-5.00<mytemp)&&(mytemp<40.00))
- {
- digitalWrite(tempgreen, LOW);
- digitalWrite(tempred, HIGH);
- digitalWrite(tempblue, HIGH);
- }
- else if((40.00<mytemp)&&(mytemp<65.00))
- {
- digitalWrite(tempgreen, HIGH);
- digitalWrite(tempred, HIGH);
- digitalWrite(tempblue, LOW);
- }
- else if((65.00<mytemp)&&(mytemp<100.00))
- {
- digitalWrite(tempgreen, HIGH);
- digitalWrite(tempred, LOW);
- digitalWrite(tempblue, HIGH);
- }
- else
- {
- digitalWrite(tempred, LOW);
- delay(100);
- digitalWrite(tempred, HIGH);
- delay(100);
- }
- }
- /*touchswitch detect*/
- void touch(void)
- {
- int buttonState;
- buttonState = digitalRead(touchswitch);
- if(buttonState==LOW) //如果检测到低电平,说明按键按下
- {
- delay(10);
- if(buttonState==LOW)
- {
- digitalWrite(onboardLed,!digitalRead(onboardLed));
- delay(100);
- while(!digitalRead(touchswitch));
- delay(10);
- }
- }
- }
- /* receive function*/
- void red(byte flag, byte numOfValues)
- {
- // analogWrite(redLed, meetAndroid.getInt());
- if(meetAndroid.getInt() > val)
- {
- meetAndroid.send("Flow+loading");
- digitalWrite(re, HIGH);
- digitalWrite(re1, LOW);
- delay(12*(meetAndroid.getInt()-val));
- digitalWrite(re1, HIGH);
- val = meetAndroid.getInt();
- }
- if(meetAndroid.getInt() < val)
- {
- meetAndroid.send("Flow-loading");
- ad = (val - meetAndroid.getInt());
- digitalWrite(re, LOW);
- digitalWrite(re2, LOW);
- delay(12*ad);
- digitalWrite(re2, HIGH);
- val = meetAndroid.getInt();
- }
- // meetAndroid.send(tempSensor.getTemperature());
- }
- /*
- * Whenever the multicolor lamp app changes the green value
- * this function will be called
- */
- void green(byte flag, byte numOfValues)
- {
- // analogWrite(greenLed, meetAndroid.getInt());
- if(meetAndroid.getInt() > val)
- {
- meetAndroid.send("Temp+loading");
- digitalWrite(re, HIGH);
- digitalWrite(re3, LOW);
- delay(25*(meetAndroid.getInt()-val));
- digitalWrite(re3, HIGH);
- val = meetAndroid.getInt();
- }
- if(meetAndroid.getInt() < val)
- {
- meetAndroid.send("Temp-loading");
- ad = (val - meetAndroid.getInt());
- digitalWrite(re, LOW);
- digitalWrite(re4, LOW);
- delay(25*ad);
- digitalWrite(re4, HIGH);
- val = meetAndroid.getInt();
- }
- // meetAndroid.send(tempSensor.getTemperature());
- }
- /*
- * Whenever the multicolor lamp app changes the blue value
- * this function will be called
- */
- void blue(byte flag, byte numOfValues)
- {
- analogWrite(blueLed, meetAndroid.getInt());
- }
- void flow(byte flag, byte numOfValues)
- {
- digitalWrite(onboardLed, LOW);
- }
- void flow1(byte flag, byte numOfValues)
- {
- digitalWrite(onboardLed, HIGH);
- }
复制代码
///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////
源码及应用程序:
|