极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17069|回复: 5

mega2560电机,无极变速

[复制链接]
发表于 2012-11-2 17:56:05 | 显示全部楼层 |阅读模式

作者:邓帅哥

组装图/运行图+应用程序/源码demo,


将libfordeng解压后放到arduino编译器的lib...文件下
接下来copy下面所述的arduino当中(建议使用0022版本)
注意蓝牙模块先别安装上去(如果你能确定蓝牙模块没有占到你下载程序的端口,你可以先装上)
由于晚上要陪老婆,时间关系,就不上图了
安装方法,直接看下面组装图
接线方法,看arduino中的定义,我就不上图了。
next:
见运行图片中两个应用程序的apk需要安装在你的android设备上面,
最后,,,,,最后,还是那句话,不要崇拜哥,哥为人民服务,句号(深藏功与名)

///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////
组装图+app运行图片















///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////

  1. /*
  2.   arduino源码
  3. author: Joel- Deng -2012.6.3
  4. */

  5. #include <MeetAndroid.h>
  6. #include <OneWire.h>
  7. OneWire  ds(12);        // ds18b20 pin #2 (middle pin) to Arduino pin 12




  8. MeetAndroid meetAndroid;

  9. int blueLed = 11;
  10. int touchswitch =14;
  11. int tempred = 15;
  12. int tempgreen = 16;
  13. int tempblue =17;
  14. int re =2;
  15. int re1 =3;
  16. int re2 =4;
  17. int re3 =5;
  18. int re4 =6;
  19. int val;
  20. int ad;
  21. int onboardLed = 10;
  22. int mytemp;
  23. void setup()  
  24. {
  25.   // use the baud rate your bluetooth module is configured to
  26.   // not all baud rates are working well, i.e. ATMEGA168 works best with 57600
  27.   Serial.begin(57600);
  28.   // register callback functions, which will be called when an associated event occurs.
  29.   meetAndroid.registerFunction(red, 'o');
  30.   meetAndroid.registerFunction(green, 'p');  
  31.   meetAndroid.registerFunction(blue, 'q');
  32.   meetAndroid.registerFunction(flow, 'a');
  33.   meetAndroid.registerFunction(flow1, 'f');
  34.   pinMode(onboardLed, OUTPUT);

  35.   // set all color leds as output pins
  36.   // pinMode(redLed, OUTPUT);
  37.   //  pinMode(greenLed, OUTPUT);
  38.   pinMode(blueLed, OUTPUT);
  39.   pinMode(re, OUTPUT);
  40.   pinMode(re1, OUTPUT);
  41.   pinMode(re2, OUTPUT);
  42.   pinMode(re3, OUTPUT);
  43.   pinMode(re4, OUTPUT);
  44.   pinMode(tempgreen,OUTPUT);
  45.   pinMode(tempred,OUTPUT);
  46.   pinMode(tempblue,OUTPUT);
  47.   pinMode(touchswitch,INPUT);
  48.   // just set all leds to high so that we see they are working well
  49.   //  digitalWrite(redLed, HIGH);
  50.   //  digitalWrite(greenLed, HIGH);
  51.   digitalWrite(blueLed, HIGH);
  52.   digitalWrite(re, LOW);
  53.   digitalWrite(re1, HIGH);
  54.   digitalWrite(re2, HIGH);
  55.   digitalWrite(re3, HIGH);
  56.   digitalWrite(re4, HIGH);
  57.   digitalWrite(onboardLed, HIGH);
  58.   digitalWrite(tempgreen, HIGH);
  59.   digitalWrite(tempred, HIGH);
  60.   digitalWrite(tempblue, HIGH);
  61.   digitalWrite(touchswitch,HIGH);
  62.   val = meetAndroid.getInt();



  63. }
  64. int Temp;
  65. void getTemp(void) {


  66.   byte i;
  67.   byte present = 0;
  68.   byte data[12];
  69.   byte addr[8];

  70.   if ( !ds.search(addr)) {
  71.     //      Serial.print("No more addresses.\n");
  72.     ds.reset_search();
  73.     return;
  74.   }

  75.   ds.reset();
  76.   ds.select(addr);
  77.   ds.write(0x44,1);         // start conversion, with parasite power on at the end

  78.   delay(20);     // maybe 750ms is enough, maybe not
  79.   // we might do a ds.depower() here, but the reset will take care of it.

  80.   present = ds.reset();
  81.   ds.select(addr);   
  82.   ds.write(0xBE);         // Read Scratchpad

  83.   // Serial.print("P=");
  84.   // Serial.print(present,HEX);
  85.   // Serial.print(" ");
  86.   for ( i = 0; i < 9; i++) {           // we need 9 bytes
  87.     data[i] = ds.read();
  88.     //   Serial.print(data[i], HEX);
  89.     //   Serial.print(" ");
  90.   }
  91.   Temp=(data[1]<<8)+data[0];//take the two bytes from the response relating to temperature

  92.   Temp=Temp>>4;//divide by 16 to get pure celcius readout

  93.   //next line is Fahrenheit conversion
  94.   // Temp=Temp*1.5; // comment this line out to get celcius
  95.   // Serial.print("T=");//output the temperature to serial port
  96.   // Serial.print(Temp);
  97.   //   Serial.print("  ");


  98.   //  Serial.print(" CRC=");
  99.   //  Serial.print( OneWire::crc8( data, 8), HEX);
  100.   //  Serial.println();
  101. }

  102. void loop()
  103. {
  104.   // digitalWrite(touchswitch,HIGH);   
  105.   meetAndroid.receive();
  106.   // you need to keep this in your loop() to receive events
  107.   getTemp();
  108.   //uint16_t data = Temp;
  109.   meetAndroid.send(Temp);
  110.   touch();
  111.   tempdisplay();

  112.   delay(100);//the delay is very importent
  113. }

  114. /*
  115. * Whenever the multicolor lamp app changes the red value
  116. * this function will be called
  117. */
  118. /* tempdisplay led red green blue */
  119. void tempdisplay(void)
  120. {
  121.   mytemp =Temp;
  122.   if((-5.00<mytemp)&&(mytemp<40.00))
  123.   {
  124.     digitalWrite(tempgreen, LOW);
  125.     digitalWrite(tempred, HIGH);
  126.     digitalWrite(tempblue, HIGH);
  127.   }
  128.   else if((40.00<mytemp)&&(mytemp<65.00))
  129.   {
  130.     digitalWrite(tempgreen, HIGH);
  131.     digitalWrite(tempred, HIGH);
  132.     digitalWrite(tempblue, LOW);
  133.   }
  134.   else if((65.00<mytemp)&&(mytemp<100.00))
  135.   {
  136.     digitalWrite(tempgreen, HIGH);
  137.     digitalWrite(tempred, LOW);
  138.     digitalWrite(tempblue, HIGH);
  139.   }
  140.   else
  141.   {
  142.     digitalWrite(tempred, LOW);
  143.     delay(100);
  144.     digitalWrite(tempred, HIGH);
  145.     delay(100);
  146.   }

  147. }
  148. /*touchswitch detect*/
  149. void touch(void)
  150. {
  151.   int buttonState;
  152.   buttonState = digitalRead(touchswitch);
  153.   if(buttonState==LOW)  //如果检测到低电平,说明按键按下
  154.   {      
  155.     delay(10);
  156.     if(buttonState==LOW)
  157.     {

  158.       digitalWrite(onboardLed,!digitalRead(onboardLed));  
  159.       delay(100);
  160.       while(!digitalRead(touchswitch));
  161.       delay(10);
  162.     }
  163.   }



  164. }

  165. /* receive function*/
  166. void red(byte flag, byte numOfValues)
  167. {
  168.   //  analogWrite(redLed, meetAndroid.getInt());
  169.   if(meetAndroid.getInt() > val)
  170.   {  
  171.     meetAndroid.send("Flow+loading");  
  172.     digitalWrite(re, HIGH);
  173.     digitalWrite(re1, LOW);  
  174.     delay(12*(meetAndroid.getInt()-val));
  175.     digitalWrite(re1, HIGH);
  176.     val = meetAndroid.getInt();
  177.   }
  178.   if(meetAndroid.getInt() < val)

  179.   {
  180.     meetAndroid.send("Flow-loading");
  181.     ad = (val - meetAndroid.getInt());
  182.     digitalWrite(re, LOW);
  183.     digitalWrite(re2, LOW);
  184.     delay(12*ad);
  185.     digitalWrite(re2, HIGH);
  186.     val = meetAndroid.getInt();
  187.   }
  188.   // meetAndroid.send(tempSensor.getTemperature());
  189. }

  190. /*
  191. * Whenever the multicolor lamp app changes the green value
  192. * this function will be called
  193. */
  194. void green(byte flag, byte numOfValues)
  195. {
  196.   //  analogWrite(greenLed, meetAndroid.getInt());
  197.   if(meetAndroid.getInt() > val)
  198.   {  
  199.     meetAndroid.send("Temp+loading");
  200.     digitalWrite(re, HIGH);
  201.     digitalWrite(re3, LOW);
  202.     delay(25*(meetAndroid.getInt()-val));
  203.     digitalWrite(re3, HIGH);
  204.     val = meetAndroid.getInt();
  205.   }
  206.   if(meetAndroid.getInt() < val)
  207.   {
  208.     meetAndroid.send("Temp-loading");
  209.     ad = (val - meetAndroid.getInt());
  210.     digitalWrite(re, LOW);
  211.     digitalWrite(re4, LOW);
  212.     delay(25*ad);
  213.     digitalWrite(re4, HIGH);
  214.     val = meetAndroid.getInt();
  215.   }
  216.   // meetAndroid.send(tempSensor.getTemperature());
  217. }
  218. /*
  219. * Whenever the multicolor lamp app changes the blue value
  220. * this function will be called
  221. */
  222. void blue(byte flag, byte numOfValues)
  223. {
  224.   analogWrite(blueLed, meetAndroid.getInt());
  225. }
  226. void flow(byte flag, byte numOfValues)
  227. {
  228.   digitalWrite(onboardLed, LOW);
  229. }
  230. void flow1(byte flag, byte numOfValues)
  231. {

  232.   digitalWrite(onboardLed, HIGH);

  233. }
复制代码


///////////////////////////////////////////////////////华丽的分割线///////////////////////////////////

源码及应用程序:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-11-2 18:10:06 | 显示全部楼层
我家的喷头好像是九牧的...

这是热水器控制么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-2 18:59:37 | 显示全部楼层
幻生幻灭 发表于 2012-11-2 18:10
我家的喷头好像是九牧的...

这是热水器控制么?

恩,这个热水器是用android手机/平板设备控制的
回复 支持 反对

使用道具 举报

发表于 2012-11-3 14:18:21 | 显示全部楼层
洗澡带手机进去吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-3 15:48:57 | 显示全部楼层
tgyfish 发表于 2012-11-3 14:18
洗澡带手机进去吗?

这是基于手机无线蓝牙控制的,在20米标准内,你可以在客厅用手机调节好,再去浴室。手机可以设定温度、水流量大小,并可以设定时间,并且,你也可以在淋浴的时候听音乐。升级版上面,我们可以给你加个显示屏上去与你的android设备同步电影。当然,你也可以把手机带入浴室里面,如果你真的有需要的话。
回复 支持 反对

使用道具 举报

发表于 2012-11-3 18:12:12 | 显示全部楼层
很想学习JAVA有关的东西,可不知道从何入手,楼主普及下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 22:58 , Processed in 0.048817 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表