Saya cukup baru dalam topik Arduino dan mencoba menggabungkan beberapa hal.
Pertama saya mencoba menyiapkan motor DC yang dapat dikontrol melalui PWM, yang berfungsi sempurna saat digunakan secara mandiri. Saya dapat menghidupkan/menghentikan motor dan mengubah kecepatan tergantung pada nilai yang saya kirim ke pin PWM.
Kedua saya mencoba menggunakan penerima nirkabel RF-5V untuk bekerja dengan remote control dari stopkontak listrik jarak jauh. Untuk yang ini saya mengikuti instruksi di cara membuat 433mhz pelacak. Ini dengan sendirinya juga berfungsi. Saya dapat menerima kode berbeda tergantung pada tombol mana di remote yang saya tekan.
Sekarang bagian yang menyenangkan dimulai: Saya ingin mengintegrasikan kedua proyek menjadi satu, sehingga saya dapat menggunakan remote untuk menghidupkan/menghentikan motor. Jadi saya membuat sirkuit berikut:
(Terima kasih untuk beberapa dari Anda yang menunjukkan bahwa rangkaiannya tidak sesuai dengan sketsa. Saya membuat kesalahan saat menggambar, tetapi meskipun kabel terpasang pada pin yang tepat, itu berfungsi seperti yang dijelaskan)
dan kode berikut (yang sebagian berasal dari instruksi yang disebutkan di atas):
#include <RCSwitch.h>
// init 433MHz lib
RCSwitch mySwitch = RCSwitch();
unsigned long lOldValue=0; // to check for consecutive reads on 433MHz
int motorPin = 5; // PWM-Pin to use for motor
void setup()
{
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
// set-up rf receiver
mySwitch.enableReceive(0); // 433MHz Receiver on interrupt 0 => that is pin #2
}
void loop()
{
if (mySwitch.available())
{
int value = mySwitch.getReceivedValue();
// only react, if at least two times same value received
if (value == lOldValue)
{
if (value == 0)
{
Serial.print("Unknown 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() );
// One of the keys on the remote
if (value == 274393) {
Serial.println("got start code, starting motor");
analogWrite(motorPin, 100); // start the motor
}
// another key on the remote
if (value == 270384) {
Serial.println("got stop code, stopping motor");
analogWrite(motorPin, 0); // stop the motor
}
}
}
lOldValue = value;
mySwitch.resetAvailable();
}
}
ketika saya menjalankan kode dan mengklik remote, saya mendapatkan nilai berbeda yang ditampilkan tergantung pada tombol yang saya tekan. Jadi penerima nirkabel berfungsi seperti yang diharapkan.
Ketika saya menerima nilai yang tepat untuk menghidupkan motor, motor benar-benar mulai berputar, jadi ini juga berfungsi.
Dan di sinilah bagian yang menyenangkan dimulai: Segera setelah saya menggunakan fungsi analogWrite untuk mengirim data ke port PWM yang motornya terhubung, penerima nirkabel berhenti bekerja (atau setidaknya saya tidak mendapatkan nilai apa pun lagi saat menekan tombol pada terpencil).
Saya menemukan beberapa posting/deskripsi masalah serupa di internet yang mengatakan untuk mencoba yang berikut ini:
- Gunakan pin lain untuk PWM (karena kemungkinan konflik interupsi). Saya mencobanya juga, perilaku yang sama
- Gunakan catu daya eksternal alih-alih Kabel USB, yang membantu seseorang mengatasi masalah ini. Tidak disini. Tidak berhasil juga
Jadi pertanyaannya adalah: Adakah yang tahu cara menggabungkan kedua hal tersebut sehingga dapat menggunakan penerima nirkabel untuk mendapatkan perintah dan menghidupkan/mematikan motor dengannya?
int motorPin = 5;
, tetapi dalam skema Anda memasang motor ke pin 3, dan pada pin 5 Anda memiliki transceiver 433... Apakah Anda memperbaikinya dengan benar? - person frarugi87   schedule 09.01.2017