Как заставить Arduino выполнять определенное действие, когда компьютер заблокирован / разблокирован?

У меня есть компьютер с Windows, подключенный к моему Arduino Uno. Я работаю в районе с кучей кабинок, и мы довольно регулярно покидаем наш стол, чтобы пойти и устранить неполадки с другими компьютерами (я техник службы поддержки). Когда мы уходим, нам приказывают поднимать и опускать небольшой флаг, чтобы руководство могло видеть, сидим мы за своим столом или нет. Я подключил свой arduino к серводвигателю со следующим кодом.


#include <Servo.h>

Servo myservo;  // create servo object to control a servo
#define servoPin 3 //~
#define pushButtonPin 2 

int angle =0;    // initial angle  for servo
int angleStep =20;
const int minAngle = 0;
const int maxAngle = 90;

int buttonPushed =0;

void setup() {
  // Servo button demo by Robojax.com
  Serial.begin(9600);          //  setup serial
  myservo.attach(servoPin);  // attaches the servo on pin 3 to the servo object
  pinMode(pushButtonPin,INPUT_PULLUP);
   Serial.println("Nathan's Status flag");
}

void loop() {
  if(digitalRead(pushButtonPin) == LOW){
    buttonPushed = 1;
  }
   if( buttonPushed ){
  // change the angle for next time through the loop:
  angle = angle + angleStep;

    // reverse the direction of the moving at the ends of the angle:
    if (angle <= minAngle || angle >= maxAngle) {
      angleStep = -angleStep;
       buttonPushed = 0;
    }
    myservo.write(angle); // move the servo to desired angle
      Serial.print("Moved to: ");
      Serial.print(angle);   // print the angle
      Serial.println(" degree");    
  delay(100); // waits for the servo to get there
   }  
}

У нас также есть политика, согласно которой мы должны держать наши компьютеры заблокированными по очевидным причинам. Я рано усвоил этот урок. Я хотел бы отредактировать свой код так, чтобы при блокировке компьютера флаг опускался, а затем, когда мой компьютер разблокирован, он снова поднимался. Таким образом, пока я помню, что мой компьютер заблокирован, когда я в отъезде, мне не нужно беспокоиться о флаге. Вот мой макет макета/arduino. Макет Arduino У меня также есть обработка на компьютере, и я планирую использовать ее. (https://processing.org/)

, 👍-1

Обсуждение

Аспект определения того, заблокирован ли компьютер в данный момент из-за обработки, вероятно, лучше задать на обычном stackexchange. Если есть конкретный вопрос, связанный со стороной Arduino, управляющей сервоприводом, ваш вопрос может быть об этом., @timemage

вы могли бы попробовать изменить последовательность событий вспять ... может быть, нажатие кнопки на arduino может заблокировать компьютер, @jsotola

https://stackoverflow.com/questions/5881887/running-a-script-before-locking-a-computer-on-windows, @jsotola


1 ответ


1

Считайте значение через последовательный порт (что именно полностью зависит от вас), чтобы выполнить ту же работу, что и кнопка сейчас.

Используйте Serial.read (), чтобы получить эти данные, и Serial.available (), чтобы узнать, есть ли какие-либо данные для чтения.

Как вы генерируете это значение на ПК для отправки через последовательный порт, мы не можем вам помочь, так как это выходит за рамки данного сайта.

,