这个项目是我们在宁波创客周末完成的一个作品,当时用的是以太连接。
touchlight 是一款通过触碰而产生灯光开关/颜色变化的情侣间的情感传递的产品,假设情侣在异地,通过 touchlight 就可以利用灯光的变化来让对方知道自己的思念。这个想法和 NABI黑客马拉松 所要求的理念满想的,那我们就来试试看能不能参加。
创业周末创客版时候,我们在演示 touchlight
因为当时做的是一个模型,所以我们用的是以太网来连接,目前考虑到了实际的易用性,我们重新写了一下代码,因为牵扯到了某些私有API的问题还没有搞定,下面放出上次用的代码。
- #include <SPI.h>
- #include <Ethernet.h>
- #include <EthernetUdp.h>
- #include "string.h"
-
- #define Device 1
- byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
- IPAddress ip(192, 168, 1, 177);
-
- unsigned int localPort = 8888;
- unsigned int Count_send = 0;
-
- char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
- char ReplyBuffer[] = "acknowledged";
- EthernetUDP Udp;
-
- //const int TrigPin = 8; //+,A
- //const int EchoPin = 9;
- //float distance;
- const int blueLed = 13;
- const int keyPin = 4;
-
- void setup() {
- Ethernet.begin(mac,ip);
- Udp.begin(localPort);
-
- Serial.begin(9600);
- // pinMode(TrigPin, OUTPUT);
- // pinMode(EchoPin, INPUT);
-
- pinMode(blueLed, OUTPUT);
- pinMode(keyPin,INPUT); //将4号数字口设置为输入状态
- digitalWrite(blueLed, HIGH);//常态:显示光
-
- delay(500);
- }
-
- void loop() {
- // distanceEcho();
- // Serial.print(distance);
-
- // if(distance > 0 && distance < 10.00){//有人靠近
- int n =digitalRead(keyPin); //创建一个变量n,将4号数字口的状态采集出来赋值给他。
- if (n==HIGH) //判断n是否为高电平,如果是执行下面的语句,不是则跳过。
- {
- Serial.print("-- people near + keypress() --");
- keyPressed();//按键被触发
- delay(10);
- digitalWrite(blueLed,HIGH);
- delay(10);
- // Serial.print("high");
- digitalWrite(blueLed,LOW);
- // Serial.print("low");
- }
-
- int packetSize = Udp.parsePacket();
- Serial.print(packetSize);
- Serial.println();
- if(packetSize){
- digitalWrite(blueLed, HIGH);//有人靠近亮白灯,灯变换
- Serial.print("people+light");
- }else{
- digitalWrite(blueLed, LOW);//有人靠近不亮白灯,灯变换
- Serial.print("people+low");
- }
-
- Serial.println();
- }
-
- void keyPressed() {
- IPAddress ip(192, 168, 1, 178);
- int port = 8888;
- char Buffer_Str[] = "Heloo world!";
- uint8_t *ps_BufferStr = (uint8_t *)Buffer_Str;
-
- Udp.beginPacket(ip, (uint16_t)port);
- Udp.write(ps_BufferStr, strlen(Buffer_Str));
- Udp.endPacket();
- }
- /*
- void distanceEcho(){
- digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
- delayMicroseconds(2);
- digitalWrite(TrigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(TrigPin, LOW);
- distance = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成distance
- distance = (int(distance * 100.0)) / 100.0; //保留两位小数
- }
- */
复制代码
这个代码很基础,仅仅做到了能用的阶段。
而且用到的原件也就只有两块 UNO 的板子,两块 以太网扩展板,超声波传感器, led 灯,电阻还有两个按钮。。。几乎就是基础教程的内容。。。
话说回来,为什么要做 touchlight ?
1. 当然满足自己的需求,解决不能见面的相思之苦,虽然有很好用的通信工具在,但有时候我们还是需要实体物品的慰借。这个时候,我就想到了用灯光来试试,当时的想法就是这么基础。。。很明显,用灯被吐槽了。
2. 虽说是用灯来表达感情并不是一件多么有想法的事情,但这是比较方便的伪智能的方式,街上的 app 灯就是这样,我认为,用 app 来控制一盏灯的亮或灭,明或暗,这在我看来是有点反智的。不是说不好,但这功能应该算是附加的吧,而不是拿来当主打功能。
3. 当时比赛是用点子来找团队的,我是去试试点子的,凑巧刚好被选上了。
当时因为主打情感而被嫌弃了,而这次比赛的内容是情感智能机器人。就情感来说,是符合的。而后面智能机器人而言,用上我所认知的技能,我能做到智能。但做不成机器人,不管怎么样还是试着发个帖子投个稿。
正在开发的功能:
利用 IFTTT 实现通过关键词来改变颜色。
|