Menggunakan pengontrol Arduino untuk interupsi

Pada artikel ini, saya akan memberikan contoh penggunaan pengontrol arduino untuk memanggil interupsi dalam program C #.



Perlu dicatat bahwa WindowsForms memiliki elemen Timer yang menyala dan mengeksekusi kode setelah jangka waktu tertentu.







Saya memutuskan untuk menerapkan ini menggunakan mikrokontroler Arduino UNO.



Untuk melakukan ini, saya memprogram pengontrol sehingga setelah jangka waktu tertentu ia mengirim data ke port serial, menyebabkan program terputus.



Saya percaya bahwa artikel ini akan menarik bagi mereka yang terlibat dalam pemrograman mikrokontroler, karena ini memberikan contoh salah satu opsi untuk menggunakan mikrokontroler.



void setup(){
Serial.begin(9600);//  
}
int str=0;
int interval=0;
String text;
void loop()
{


	while(str==0)
	 str=Serial.parseInt();//  
  if (str==1)//    
  {
	 while(interval==0)
	   interval=Serial.parseInt();// 
	 text=String(interval);
	 text+="!";
	 while(str!=2){
		delay(interval);//    
		
		Serial.println(text);//    
		
		 str=Serial.parseInt();//  
	 }
	 interval=0;
  }

}


Pengontrol juga menerima perintah untuk memulai (1) dan menghentikan (2) pengatur waktu. (Analog dari metode start dan stop untuk windowsforms timer).



Setelah menerima perintah start, pengontrol menunggu interval waktu setelah data akan dikirim ke port serial.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO.Ports;
using System.IO;
using System.Net;
namespace ConsoleApp33
{
    class Program
    {
        private static SerialPort ard = new SerialPort("COM13", 9600);//           .
        private static Thread stop_thread = new Thread(Stop);
        private static bool sost = true;
       [MTAThread]
        static void Main(string[] args)
        {
           
            SerialDataReceivedEventHandler handler = new SerialDataReceivedEventHandler(Serial_interrupt);//    
            ard.DataReceived += handler;
            //  
            int interval = int.Parse(Console.ReadLine());
            //  
            while (ard.IsOpen != true)
                ard.Open();
            // 
            ard.WriteLine("1");
            Thread.Sleep(10);
            ard.WriteLine(interval.ToString());
            Console.WriteLine(ard.ReadLine());
            //   
            stop_thread.IsBackground = true;
         
            stop_thread.Start();
         
            while (sost) Thread.Sleep(1);// 
        }
        public enum Comand
        {
          Start = 1,// 
         Stop = 2   // 
        }
        private static System.DateTime dateTime;
        public static void Serial_interrupt(object sender,SerialDataReceivedEventArgs e)
        {
            //     
            dateTime = DateTime.Now;
            Console.WriteLine(dateTime.ToString());
        }
        public static void Stop()
        {
            if ((int)Console.ReadKey().Key == 27)//   Esc  
            {
                ard.WriteLine(Comand.Stop.ToString());// 
                sost = false;// Main
            }
            Thread.Sleep(10);
        }
      
    }
}


Program C # membuka koneksi ke port dan peristiwa terjadi ketika data tiba



ard.DataReceived += handler;


memanggil metode Serial_interrupt (), yang mencetak tanggal dan waktu komputer ke konsol.



Ada juga utas stop_thread yang menghentikan program dan mengirimkan perintah mematikan ke pengontrol ketika tombol Esc ditekan.



Setelah memulai program akan menunggu pengguna memasukkan interval waktu setelah itu pengontrol akan mengirim data, kemudian, sebelum menekan tombol Esc, program akan mengeluarkan tanggal dan waktu ke konsol setelah interval waktu yang ditentukan.



Terima kasih atas perhatiannya.



All Articles