ผมสั่งสินค้ารหัส A564 มาทำการทดสอบดู 1 โมดูลย์ใช้งานได้ปกติดีระยะหวงผล 100% ที่ระยะทาง 2.50 เมตร เกินนั้นก็ % ลดลงตามอัตราส่วนระยะทาง คำถาม..
ขา Echo - 12 เป็นขาชนิด I2C หรือไม่ครับ.. !!! ถ้าผมต้องการต่อ โมดูลย์ รหัส A564 โมดูลอัลตราโซนิก US-015 ประมาณ 20 โมดูลย์ จะทำงานได้ไหม ขอบคุณ

Ultrasonic ไม่ได้เป็น I2C ครับ เป็นแบบดิจิตอล
ถ้าต่อ 20 ตัวตามหลักการทำงานได้ครับ

ขา arduino ทุกขา สามารถใช้งานเป็นขา digital ได้ครับ
ใช้ขาไหนก็ได้ ไม่ต้องเป็นขา 12 , 13
ถ้ามี 20 โมดูลก็ใช้ 40 ขาในการต่อใช้ arduino mega ยังมีขาเหลือ !!!

http://www.theengineeringprojects.com/2015/02/interfacing-multiple-ultrasonic-sensor-arduino.html
ท่านเจ้าของร้าน ท่านมี Ultrasonic สัก 3 ตัวไหม ช่วยลองให้ผมหน่อย ผมไม่มีเวลาไปสั่งอุปกร์ช่วงนี้ รายละเอียดตามรูป หรือท่านไดมี Ultrasonic ในมีอตอนนี้มากพอ ก็ทดสอบให้ด้วยครับ ผมมีอยู่ตัวเดียวตอนนี้ เอาตัวที่มี Lib มา
ให้ จะได้เขียน code สั้นหน่อย ถ้า โปรแกรม OK เราสามารถใช้ใน UNO จะได้ 16 โมดูล
#include <Ultrasonic.h>
int Trig6 = 6;//Ultrasonic ตัวที่ 1
int Trig7 = 7;//Ultrasonic ตัวที่ 2
int Trig8 = 8;//Ultrasonic ตัวที่ 3
int Trig13 = 13; //CLK
Ultrasonic ultrasonic6(13,6,10000); // (Trig PIN,Echo PIN)
Ultrasonic ultrasonic7(13,7,10000); // (Trig PIN,Echo PIN)
Ultrasonic ultrasonic8(13,8,10000); // (Trig PIN,Echo PIN)
void setup() {
Serial.begin(9600);
pinMode(Trig6,INPUT);
pinMode(Trig7,INPUT);
pinMode(Trig8,INPUT);
pinMode(Trig13,OUTPUT);
}
void loop()
{
Serial.print(" Pin : 6 " );
Serial.print(ultrasonic6.Ranging(CM));
Serial.println(" cm " );
delay(30);
Serial.print(" Pin : 7 " );
Serial.print(ultrasonic7.Ranging(CM));
Serial.println(" cm " );
delay(30);
Serial.print(" Pin : 8 " );
Serial.print(ultrasonic8.Ranging(CM));
Serial.println(" cm " );
delay(30);
}
//*************************** Lib **********************
// Ultrasonic.cpp
// Ultrasonic - Library for HR-SC04 Ultrasonic Ranging Module.
// GitHub: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04
// #### LICENSE ####
// This code is licensed under Creative Commons Share alike
// and Attribution by J.Rodrigo ( http://www.jrodrigo.net ).
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include "Ultrasonic.h"
Ultrasonic::Ultrasonic(int TP, int EP)
{
pinMode(TP,OUTPUT);
pinMode(EP,INPUT);
Trig_pin=TP;
Echo_pin=EP;
Time_out=3000; // 3000 ยตs = 50cm // 30000 ยตs = 5 m
}
Ultrasonic::Ultrasonic(int TP, int EP, long TO)
{
pinMode(TP,OUTPUT);
pinMode(EP,INPUT);
Trig_pin=TP;
Echo_pin=EP;
Time_out=TO;
}
long Ultrasonic::Timing()
{
digitalWrite(Trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
duration = pulseIn(Echo_pin,HIGH,Time_out);
if ( duration == 0 ) {
duration = Time_out; }
return duration;
}
long Ultrasonic::Ranging(int sys)
{
Timing();
if (sys) {
distance_cm = duration /29 / 2 ;
return distance_cm;
} else {
distance_inc = duration / 74 / 2;
return distance_inc; }
}
/////////////////////////////////
//****************************************** Ultrasonic.h *****************
// Ultrasonic - Library for HR-SC04 Ultrasonic Ranging Module.
// GitHub: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04
// #### LICENSE ####
// This code is licensed under Creative Commons Share alike
// and Attribution by J.Rodrigo ( http://www.jrodrigo.net ).
#ifndef Ultrasonic_h
#define Ultrasonic_h
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#define CM 1
#define INC 0
class Ultrasonic
{
public:
Ultrasonic(int TP, int EP);
Ultrasonic(int TP, int EP, long TO);
long Timing();
long Ranging(int sys);
private:
int Trig_pin;
int Echo_pin;
long Time_out;
long duration,distance_cm,distance_inc;
};
#endif
ได้ผลอย่างไรแจ้งด้วยครับ sawoey.p@gmail.com

ขอแก้ไข ตัวแปรใหม่ครับจะได้ไม่ งงง ขาของ Ultrasonic
#include <Ultrasonic.h>
int ECH6 = 6;//Ultrasonic ตัวที่ 1
int ECH7 = 7;//Ultrasonic ตัวที่ 2
int ECH8 = 8;//Ultrasonic ตัวที่ 3
int Trig13 = 13; //CLK
Ultrasonic ultrasonic6(13,6,10000); // (Trig PIN,Echo PIN)
Ultrasonic ultrasonic7(13,7,10000); // (Trig PIN,Echo PIN)
Ultrasonic ultrasonic8(13,8,10000); // (Trig PIN,Echo PIN)
void setup() {
Serial.begin(9600);
pinMode(ECH6,INPUT);
pinMode(ECH7,INPUT);
pinMode(ECH8,INPUT);
pinMode(Trig13,OUTPUT);
}
void loop()
{
Serial.print(" Pin : 6 " );
Serial.print(ultrasonic6.Ranging(CM));
Serial.println(" cm " );
delay(30);
Serial.print(" Pin : 7 " );
Serial.print(ultrasonic7.Ranging(CM));
Serial.println(" cm " );
delay(30);
Serial.print(" Pin : 8 " );
Serial.print(ultrasonic8.Ranging(CM));
Serial.println(" cm " );
delay(30);
}
ArduinoAll ขาย Arduino ซื้อ Arduino ทุกอย่าง เปลี่ยนชื่อเป็น AllNewStep