Raspberry y QT, efectos de marquesina
Publicado: 12 Nov 2017, 14:25
Hola gente.
Estoy tratando de hacer un pequeño programa en QT y C++ desde mi raspberry, donde tengo conectado 26 LEDs al puerto GPIO (del 2 al 27) a través de algunos ULM2803 a modo de buffres.
Usando la librería wiringPi, la idea es sencilla, se trata de hacer efectos de marquesina, un punto moviéndose, una barra, etc (lo que se me ocurra).
Pero tengo un problema, en mi primer intento (un punto desplazándose de izq a der), el código es:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
move(255,305);
wiringPiSetupGpio();
for (int i=2; i<28; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
int led = 2;
void MainWindow::on_Punto_clicked()
{
while (!ui->Detener->isChecked()) {
digitalWrite(led, HIGH);
delay (ui->ms->value());
digitalWrite(led, LOW);
led++;
if (led > 28) led = 2;
}
}
mi ventana:
https://gyazo.com/7d364d01988cac1cb11e6deadafbed88
mi problema:
al activar la rutina, el efecto es el esperado pero "se muere" la ventana en si, y no responde al intentar detener el efecto desde el radioButton Detener, en realidad se muere a cualquier evento que intente disparar...
Desde ya, agradecería cualquier ayuda.
Estoy tratando de hacer un pequeño programa en QT y C++ desde mi raspberry, donde tengo conectado 26 LEDs al puerto GPIO (del 2 al 27) a través de algunos ULM2803 a modo de buffres.
Usando la librería wiringPi, la idea es sencilla, se trata de hacer efectos de marquesina, un punto moviéndose, una barra, etc (lo que se me ocurra).
Pero tengo un problema, en mi primer intento (un punto desplazándose de izq a der), el código es:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
move(255,305);
wiringPiSetupGpio();
for (int i=2; i<28; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
int led = 2;
void MainWindow::on_Punto_clicked()
{
while (!ui->Detener->isChecked()) {
digitalWrite(led, HIGH);
delay (ui->ms->value());
digitalWrite(led, LOW);
led++;
if (led > 28) led = 2;
}
}
mi ventana:
https://gyazo.com/7d364d01988cac1cb11e6deadafbed88
mi problema:
al activar la rutina, el efecto es el esperado pero "se muere" la ventana en si, y no responde al intentar detener el efecto desde el radioButton Detener, en realidad se muere a cualquier evento que intente disparar...
Desde ya, agradecería cualquier ayuda.