Как заставить 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. У меня также есть обработка на компьютере, и я планирую использовать ее. (https://processing.org/)
@Nathan Hale, 👍-1
Обсуждение1 ответ
Считайте значение через последовательный порт (что именно полностью зависит от вас), чтобы выполнить ту же работу, что и кнопка сейчас.
Используйте Serial.read ()
, чтобы получить эти данные, и Serial.available ()
, чтобы узнать, есть ли какие-либо данные для чтения.
Как вы генерируете это значение на ПК для отправки через последовательный порт, мы не можем вам помочь, так как это выходит за рамки данного сайта.
- Плоттер с ЧПУ НА базе ардуино, необходимо устранить ошибку (invalid conversion from 'char' to 'char*' [-fpermissive]indexY = '\0';
- Как заставить сервопривод вращаться на угол больше 180°
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
- Бесполезная проводка коробки и код
- Почему сервопривод не перемещается по углам должным образом
- Микро сервопривод не работает с Arduino UNO
- поворот позиционного серводвигателя более чем на 180 градусов
Аспект определения того, заблокирован ли компьютер в данный момент из-за обработки, вероятно, лучше задать на обычном stackexchange. Если есть конкретный вопрос, связанный со стороной Arduino, управляющей сервоприводом, ваш вопрос может быть об этом., @timemage
вы могли бы попробовать изменить последовательность событий вспять ... может быть, нажатие кнопки на arduino может заблокировать компьютер, @jsotola
https://stackoverflow.com/questions/5881887/running-a-script-before-locking-a-computer-on-windows, @jsotola