ขอสอบถาม โปรกรมทดลองนี้หน่อยคะ

(Nattamon Somsak) #1

หนูเขียนโค้ดไม่เป็นเลยลองหาจากชิ้นงานแต่ละชิ้น หนูจะเอาโค้ดทุกอย่างมารวมกันยังไงดีคะ
โค้ดแรกเป็น อัลต้าโซนิคกับเซอโว โค้ดนี้ถ้าเปลี่ยนจาก อดูโน่เมกก่า 2560 มาเป็นesp8266 ต้องเปลี่ยนโค้ดไหมคะ

#include <Servo.h>

Servo servo1;

int trigPin = 9;

int echoPin = 8;

long distance;

long duration;

 

void setup()

{

servo1.attach(7);

 pinMode(trigPin, OUTPUT);

 pinMode(echoPin, INPUT);// put your setup code here, to run once:

}

 

void loop() {

ultra();

servo1.write(0);

if(distance <= 10){

servo1.write(90);

}

}

 

void ultra(){

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = duration*0.034/2;

}
0 Likes

(Permpol Thanapunnamas) #4

ไม่ต้องครับ จะใช้โมดูไหนลองเอามารวมดูก่อนก็ได้ครับ

0 Likes

(Nattamon Somsak) #5

โปรแกรมนี้มันมี blynk rfid servo สองโปรแกรมมีเซอโวทั้งสองหนูต้องตัดservo อันใดอันนึงออกใช่ไหมคะ

#include <SPI.h>
#include <RFID.h>
#include <Servo.h>
#include <HCSR04.h>
#include <ESP8266WiFi.h>
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
Servo myservo;
int pos = 0;
RFID rfid(D4, D8);
char auth[] = "6e661f6d2321473fa29229bce097f1e1";
char ssid[] = "natm";
char pass[] = "08032542";

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  SPI.begin();
  myservo.attach(16);
  rfid.init();
}
void loop()
{
  if (rfid.isCard()) {

    if (rfid.readCardSerial())
    {
      Serial.print("IS CARD...");
      Serial.println(rfid.serNum[0]);
      /////////////////////////////////////////////เริ่มหมุนเปิด
      for (pos = 90; pos >= 0; pos--)
      {
        myservo.write(pos);
        delay(5);  //ความเร็วการหมุน
      }

      delay(2000);   /////////////////หน่วงเวลา

      /////////////////////////////////////////////เริ่มหมุนกลับ
      for (pos = 0; pos <= 90; pos++)
      {
        myservo.write(pos);
        delay(20);  //ความเร็วการหมุน
      }
    }
    rfid.halt();

  }
  Blynk.run();
}
0 Likes

(Permpol Thanapunnamas) #6

เข้าใจอะไรบ้างครับในโค้ตที่เอามาใช้ พอจะอ่านการทำงานของมันคราวๆ ได้ไหมครับ

0 Likes

(Nattamon Somsak) #7

โค้ดล่างเป็น rfid แตะแล้ว เซอโวจะหมุนขึ้นคะ แล้วตั้งเวลาหมุนลงคะ
โค้ดบนเป็น อัลตร้าโซนิค เหนสิ่งกีดขวางเซอโวจะหมุนขึ้นพอไม่มีสิ่งกีดขวางจะหมุนลงคะ

0 Likes

(Nattamon Somsak) #8

หนูต้องเขียนโค้ดยังไงดีคะ หนูอยากให้ แตะ rfid หรือกดแอพ blynk แล้ว servo จะหมุนขึ้น แล้วมีอันตร้าฌซนิคเป็นเซนเซอ ไม่ให้ เซอโวหมุนลงตอนมีอะสิ่งของผ่าน พอมองออกไหมคะ คล้ายๆ กับ ที่เปิดปิดประตูรถยนหน้าหมู่บ้าน

0 Likes

(Permpol Thanapunnamas) #9

อันดับแรกช่วยแก่ ตรงที่วงให้หน่อยครับ ถ้าเราก็อปโค้ตในมือถือมาพวก > หรือ < มันจะเพี้ยน

ส่วนเรื่องการนำโค้ตมารวมกันก็ไม่ยากครับ เบื้องต้นลองจับ คำสั่งใน

void setup(){
}

และ

void loop(){
}

ทั้งสองโค้ตมารวมกัน ตรงไหนที่ซ้ำกันก็ตัดออก ไป จากนั้นเช็คการกำหนดค่าตัวแปรและ library กับ #define ด้วยว่ามีครบไหม พอรวมกันแล้วเราก็มาสร้างเงื่อนไขอย่างที่เราต้องการด้วย if else ง่ายๆ ครับ

0 Likes

(Nattamon Somsak) #10

เปลี่ยนตรงที่วงเป็นอะไรนะคะพี่

0 Likes

(Permpol Thanapunnamas) #11

เช็คหน่อยว่ามันเป็นเครื่องหมาย > หรือ < ครับ จากโค้ตต้นแบบ

0 Likes

(Nattamon Somsak) #12

คะพี่หนูจะลองดูนะคะ

0 Likes