Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2789|回復: 16

關於arduino溫度感測SD Card警示音語法問題

[複製鏈接]
發表於 2017-8-24 16:05:40 | 顯示全部樓層 |閱讀模式
本帖最後由 stworld8591 於 2017-8-25 09:06 編輯

不好意思
想問一下各位大大們

我在arduino上寫了一段當sensor溫度感應大於等於27度時
他能幫我透過sd card去將音樂撥放出來(類似警示音)
這段燒好後 我們會透過命令提示元去執行js檔測試看看是否正常
1111.JPG
測試出來結果是正常的大於27度會叫

但能不能在命令提示元中立即讓他馬上停止叫

因為我用ctrl+c也沒用 他還是一直叫

例如key個數字1 或 0 他就會停

因為現在狀況是我arduino燒進去的語法是當>=27度會叫
但必須要等到他低於27度她才會安靜
不知道是要在js檔內寫語法還是燒入時就要寫進去


因為我幾乎完全不懂javascript所以不太會寫語法等等的
想問一下各位大大能不能幫我

我arduino內的語法也是拿範例 再去修改的 所以裡面有蠻多都是幾乎用不到的 但我也看不懂所以不敢亂刪亂mark
以下是部分語法

if (chk == 0) {
    Serial.println((float)DHT11.temperature, 2);
  } else {
    Serial.println("Sensor Error");
  }

  delay(5000);
  //dht11取溫度部分

   if(DHT11.temperature>=27){
         
          IncreaseVolume();
          SpecifyMusicPlay(1);

        }else {
          PlayPause();
        }
        

   //若溫度大於或等於27→sd card音樂就響

  
}

我也提供 js檔 跟 ino檔 請各位大大幫忙我

serialTest.js (398 Bytes, 下載次數: 1499)
 樓主| 發表於 2017-8-28 11:01:57 | 顯示全部樓層
查了很多發現 似乎只能在裡面寫死迴圈
但我不太清楚要怎麼撰寫那段
另外一種方式只能拔usb... 改寫button我也不太懂...
請求大大幫忙阿!
 樓主| 發表於 2017-8-28 11:02:59 | 顯示全部樓層
https://www.ptt.cc/bbs/ASM/M.1383793826.A.58E.html 我就是跟他一樣的狀況
有大神能幫忙在我ino檔裡修改一下嗎Q_Q
發表於 2017-8-28 11:22:33 | 顯示全部樓層
多宣告一個變數即可
unsigned char Stop = 0;
void loop() {

  if (chk == 0) {
    Serial.println((float)DHT11.temperature, 2);
  } else {
    Serial.println("Sensor Error");
  }

  delay(5000);
   if(Serial.available()) {
      char c = Serial.read();
      if(c == '1') Stop = 1;
   }
   if((DHT11.temperature>=27) && (Stop == 0))  {
               
        IncreaseVolume();
        SpecifyMusicPlay(1);
    } else {
        PlayPause();
    }
      
}

注意...一旦按下 1, 就再也不會叫了, 除非重開機
 樓主| 發表於 2017-8-28 16:50:43 | 顯示全部樓層
好的非常感謝大大 !! 我會測試看看的 真的非常感謝 我真的對於這個東西超陌生!!!
有您的幫助真的覺得好溫暖!
 樓主| 發表於 2017-8-28 18:32:26 | 顯示全部樓層
test.JPG

compiler 無法過耶大大 求解 是我哪裡少大括號嗎??
發表於 2017-8-29 08:22:51 | 顯示全部樓層
要全貼出來才看的到問題
 樓主| 發表於 2017-8-29 10:18:21 | 顯示全部樓層
超新手 發表於 2017-8-29 08:22
要全貼出來才看的到問題

整段在這邊 因為太長
所以我直接貼ino 再麻煩大大了
sketch_aug28a.ino (27.47 KB, 下載次數: 1326)
發表於 2017-8-29 10:24:16 | 顯示全部樓層
void loop() {是多餘的, 去掉第二個 loop 即可...

也就是
#ifdef FIRMATA_SERIAL_FEATURE
  serialFeature.update();
#endif

if (chk == 0) {
Serial.println((float)DHT11.temperature, 2);
發表於 2017-8-29 10:25:41 | 顯示全部樓層
還有...你的程式應該一大堆都是多餘的..
等到測試ok 後, 再一併刪掉
發表於 2017-8-29 10:29:10 | 顯示全部樓層
另外, 你也忘了宣告變數
unsigned char Stop = 0;
 樓主| 發表於 2017-8-29 11:50:51 | 顯示全部樓層
很多都是多餘的 但我看不太出來那些是要的那些是不需要的 抱歉 真的很新手
再麻煩大大多多幫忙!!
 樓主| 發表於 2017-8-29 14:32:54 | 顯示全部樓層
對了 大大如果我有接button 我要如何改用button 按一下就關掉音樂這樣 我還需要加上button的腳位嗎
還是單純有訊號給他就會觸發? 另外我想問一件事情
原本我同事有寫了一段語法 然後也有接button測試 當js檔開啟時確實會叫 案button也能讓他停止叫
但又開了另一支js檔要反向控制led時 聲音就會叫出來 實在令人無解

我們有用到 http://johnny-five.io/ 的led

附上 我同事寫的 ino檔

_0828test.ino (28 KB, 下載次數: 1107)
發表於 2017-8-29 15:55:18 | 顯示全部樓層
其實做法差不多就是那樣
  boolean buttonVal = digitalRead(buttonPin);
   if (buttonVal == LOW && temp>=27 && _playMusic){
     PlayPause();
     _playMusic= false;
     return true;
    }
    else{
     return false;
    }
但它的後面那一段又沒拿掉
if(DHT11.temperature>=27 && _playMusic){
}else {
}

另外. 為什麼你們都用 Firmata 這個範例去改?
而且沒看到 led控制?(除了 Firmata 本身)
 樓主| 發表於 2017-8-29 16:14:05 | 顯示全部樓層
我也不太清楚耶 當初同事就是拿這個改的 所以我只是在裡面加了一些東西
led就是johnnyfive的
發表於 2017-8-29 17:15:16 | 顯示全部樓層
不如一步步來
你改好了嗎?可以動了嗎?
 樓主| 發表於 2017-8-29 18:17:20 | 顯示全部樓層
目前正常了 聲音部分我們打算 改用喇叭方式 直接用開關 關掉喇叭最快... 其他程式都能正常work了 非常感謝!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-16 13:36 , Processed in 0.178496 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表