mega2560电机,无极变速
作者:邓帅哥
组装图/运行图+应用程序/源码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>
OneWireds(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;
byte addr;
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 = ds.read();
// Serial.print(data, HEX);
// Serial.print(" ");
}
Temp=(data<<8)+data;//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);
}
///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////
源码及应用程序:
我家的喷头好像是九牧的...
这是热水器控制么? 幻生幻灭 发表于 2012-11-2 18:10 static/image/common/back.gif
我家的喷头好像是九牧的...
这是热水器控制么?
恩,这个热水器是用android手机/平板设备控制的 洗澡带手机进去吗? tgyfish 发表于 2012-11-3 14:18 static/image/common/back.gif
洗澡带手机进去吗?
这是基于手机无线蓝牙控制的,在20米标准内,你可以在客厅用手机调节好,再去浴室。手机可以设定温度、水流量大小,并可以设定时间,并且,你也可以在淋浴的时候听音乐。升级版上面,我们可以给你加个显示屏上去与你的android设备同步电影。当然,你也可以把手机带入浴室里面,如果你真的有需要的话。 很想学习JAVA有关的东西,可不知道从何入手,楼主普及下
页:
[1]