這是在台大醫療電子創作的有趣程式
程式碼花了一個下午時間寫的
其實當初組員在討論的時候,是想改善離床通報器
後來我做出了一個結合物聯網的離床通報
但實際怎麼動作就不說明了,因為我們已經申請專利啦!
還想抄!?沒這麼容易!
但如果大家看的懂程式碼,其實也了解我在做什麼了
而且我把註解都寫進去了,想繞過我們的專利嗎?請右轉
寫到這裡突然想到以前有人問過我
為什麼我做PM沒事還要去顧程式呢?
原因很簡單,因為我怕餓肚子,所以從RF跳到EE兼做PM和SW
但SW沒強到可以讓大家鼓掌叫好的階段
Maker和產品間拔河的話,我會選Maker,open source很好玩的
But... Maker吃不飽啊!
以下是user身上device的code
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); //
Receiver on inerrupt 0 => that is pin #2 第二pin當輸入code
// Transmitter is connected to Arduino Pin #10 第十pin當輸出code,也就是輸出9527十進制
mySwitch.enableTransmit(10);
}
void loop() {
if
(mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding"); //這裡是因為這支源始碼傳輸第一個bit都是1,所以當是0的時候就當unkown encoding
}
else {
//開始收訊號
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
//收完訊後判斷是否為主機傳來的訊號5393,若是,發射3串代碼9527告知主機出門, 但為了期未demo順利,所以不寫if else
//if (mySwitch.getReceivedValue() == 5393) {
/* Same switch as above, but using decimal code */
mySwitch.send(9527, 24);
delay(250);
mySwitch.send(9527, 24);
delay(250);
/* Same switch as above, but using decimal code */
mySwitch.send(9527, 24);
delay(250);
mySwitch.send(9527,
24);
delay(250);
// }//若不是5393,不動作
}
mySwitch.resetAvailable();
}
}
以下是reader的code
// constants won't change. They're used
here to
// set pin numbers:
const int buttonPin = 3; //這是讓PIR被觸發的輸入腳PIN 3
const int ledPin = 13;
// 這是設定如果收到9257代號,即觸發ESP8266將PIN 13當觸發腳位
// variables will change:
int buttonState = 0; // buttonState只是設定pin 13的狀態,有點類似flag的意思, 初始為LOW
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
// initialize the LED pin as an output: 設定PIN13為OUT
pinMode(ledPin, OUTPUT);
//
initialize the pushbutton pin as an input: 設定PIN3為IN
pinMode(buttonPin, INPUT);
//
Transmitter is connected to Arduino Pin #10
設定第10PIN為發射PIN
mySwitch.enableTransmit(10);
mySwitch.enableReceive(0); //
Receiver on inerrupt 0 => that is pin #2 設定PIN2為接收PIN
}
void loop() {
// read the state of the pushbutton value: 設定PIN3為狀態PIN以便判斷
buttonState = digitalRead(buttonPin);
//
check if the pushbutton is pressed.
//
if it is, the buttonState is HIGH: 如果PIN3 high,即發射訊號, 代表被觸發
if
(buttonState == HIGH) {
// turn LED on:
/*
Same switch as above, but using decimal code */ //發射主機訊號為5393
mySwitch.send(5393, 24);
delay(1000);
mySwitch.send(5393, 24);
delay(1000);
/*
Same switch as above, but using decimal code */
mySwitch.send(5393, 24);
delay(1000);
mySwitch.send(5393, 24);
delay(1000);
Serial.print("Received "); //接收回傳的訊號
Serial.print( mySwitch.getReceivedValue()
);
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
//如果回傳訊號為9257,代表是設定的人,準備觸發ESP8266
if (mySwitch.getReceivedValue() == 9527) {
digitalWrite(ledPin, HIGH);
}else
{
digitalWrite(ledPin, LOW); //如果不是9257,將PIN13設為LOW
}
}
digitalWrite(buttonState, LOW); //將PIN3狀態腳設為LOW
}
正如我與組員所說,物聯網有無限可能
沒有做不到的,只有想不到的!
代工廠要不要也來玩玩醫電物聯網?
正如我與組員所說,物聯網有無限可能
沒有做不到的,只有想不到的!
代工廠要不要也來玩玩醫電物聯網?
沒有留言:
張貼留言