Test GPIO door functionality
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- bash, linux, rust
Línea de trabajo
No se indica ningún archivo del repositorio ni ninguna prueba. Empieza revisando el fragmento de Rust GPIO y el comportamiento de /sys/class/gpio de Beagle para los pines 87 y 89, y luego ejecuta la secuencia de apertura/cierre de la puerta en la placa. Se considera completado cuando se confirme que los pines corresponden a lo descrito y que el motor bloquea y desbloquea la puerta de forma fiable.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I made a branch in my fork with some test code, but it looks like you should be able to do this:
use gpio::{GpioOut};
use std::{thread, time};
/*
On the board,
Pin 87 -> Motor Rev
Pin 89 -> Motor Fwd
*/
/*
Here's how you'd do it in BASH
ON:
# echo 89 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio49/direction
# echo 1 > /sys/class/gpio/gpio49/value
*/
fn door_open() {
// Motor Forward for 0.5 seconds.
gpio89.set_value(value).expect("could not set gpio89");
thread::sleep(time::Duration::from_millis(500));
value = !value;
gpio89.set_value(value).expect("could not set gpio89");
}
fn door_close() {
// Motor backwards for 0.5 seconds.
gpio87.set_value(value).expect("could not set gpio87");
thread::sleep(time::Duration::from_millis(500));
value = !value;
gpio87.set_value(value).expect("could not set gpio87");
}
fn yeet_door() {
// Let's try to open GPIO 87 and 89.
let mut gpio87 = gpio::sysfs::SysFsGpioInput::open(87).unwrap();
let mut gpio89 = gpio::sysfs::SysFsGpioOutput::open(89).unwrap();
// GPIO87 and 89 will be toggled every 0.5 sec in the background by a different thread
// This should cause the door to lock and unlock.
let mut value = false;
thread::spawn(move || loop {
// Motor Forward for 0.5 seconds.
gpio89.set_value(value).expect("could not set gpio89");
thread::sleep(time::Duration::from_millis(500));
value = !value;
gpio89.set_value(value).expect("could not set gpio89");
thread::sleep(time::Duration::from_millis(3000)); // Leave it in that state for 3 secs
// Motor backwards for 0.5 seconds.
gpio87.set_value(value).expect("could not set gpio87");
thread::sleep(time::Duration::from_millis(500));
value = !value;
gpio87.set_value(value).expect("could not set gpio87");
thread::sleep(time::Duration::from_millis(3000)); // Leave it in that state for 3 secs
});
}
This needs to be tested, though. I haven't gotten a chance. The Beagle appears to be intelligent about its GPIO pin assignment in the OS, so pin 87 should actually be 87, and standard pin assignment libraries should work.
- Lenguaje dominante
- Rust
- Estrellas
- 1
- Forks
- 5
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ComputerScienceHouse/gatekeeper-door
-
Door piezo buzzer doesn't workAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
ComputerScienceHouse/gatekeeper-door#14 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
ComputerScienceHouse/gatekeeper-door#8 · 1 comentario ·
Todos los issues de ComputerScienceHouse/gatekeeper-door
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
area:sim good first issue kind:feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
Los mantenedores suelen responder en 1 día
-
The demo's interval button and chart legend keep the previous interval after an interval changeAbiertobug ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
userFRM/egui-charts#670 ·
Los mantenedores suelen responder en 1 día
-
docs good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
Usenova-Labs/usenova-backend#35 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
lugassawan/swe-workbench#823 ·
Los mantenedores suelen responder en 1 día