Arduino ile PC'ye reset tuşu yapılır mı?

Konunun üzerinden biraz zaman geçmiş fakat ihtiyacı olan biri çıkar diye yazıyorum.

Aslında bunu yapmak Python'da "seri iletişim" denilen yöntemle mümkün.
Öncelikle yapmak istediğinizin fiziksel bir düğmeyle Windows'u yeniden başlatmak olduğunu anlıyorum. Bunun için basit bir devre kurabilirsiniz.
1717232603805.png
Bu şekilde bir devre kurarsanız 4 pininde bir butonunuz olacaktır.
Şimdi şu kodu Arduino'ya yükleyebilirsiniz.
C++:
const int buttonPin = 4;
int lastButtonState = HIGH; // Initial state of the button (assuming pullup resistor)

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT_PULLUP); // Set button pin as input with pullup resistor
}

void loop() {
  int currentButtonState = digitalRead(buttonPin);

  // Check if button state has changed (pressed or released)
  if (lastButtonState != currentButtonState) {
    if (currentButtonState == LOW) {
      Serial.print(1); // Button pressed, write 1
    } else {
      Serial.print(0); // Button released, write 0
    }
    lastButtonState = currentButtonState; // Update last button state
  }
}
Bu kodun yaptığı, eğer butona basılmış ise seri portuna 1, basılmamış ise 0 gönderiyor fakat bunu yalnızca butona basıldığında yapıyor. Bu şekilde seri portunda sonsuz tane 0 görmüyoruz. Şimdi Python kısmına geçelim.

Python:
import serial, os, time

portNum = input('Enter your port: COM')
port = serial.Serial(f"COM{portNum}", 9600, timeout=0)  # Adjust port format for Windows

while True:
  data = port.read(port.inWaiting())
  if data:  # Check if data is available
    decoded_data = data.decode('ascii')  # Decode bytes using appropriate encoding
    print(decoded_data)
    if decoded_data == '0':
      print('Button released')
      print('Restarting')
      os.system('shutdown /r')
    elif decoded_data == '1':
      print('Button pressed')
  time.sleep(0.05)
Bu kod ise eğer Arduino portundan gelen veri 1 ise yani butona basıldıysa butona basıldı mesajını gönderecektir. Daha sonra buton bırakıldığında bilgisayarı yeniden başlatacaktır. Eğer kodu her çalıştırdığınızda portu sormasını istemiyorsanız "{portNum} kısmını Arduino'nun bağlı olduğu portla değiştirebilirsiniz.
 

Technopat Haberler

Yeni konular

Geri
Yukarı