Eu dou aulas em duas faculdades. Uso powerpoint em todas as aulas, até porque a minha letra não é lá essas coisas

No nosso Arduino no Parque de ontem aproveitei para desenvolver um dispositivo+software para controle remoto do powerpoint, de maneira a que eu possa comandar os slides para frente e para trás à distância, até porque as salas são grandes.

A parte do Arduino é mole: um sensor infravermelho, que eu já tinha mostrado aqui em outro post, que é ligado direto nos pinos do Arduino:

O software do Arduino também não tem mistério nenhum:

#include <WProgram.h>
#include <NECIRrcv.h>

// look for IR codes and print them as they are received

#define IRPIN 5 // pin that IR detector is connected to

NECIRrcv ir(IRPIN) ;

void setup()
{
    Serial.begin(9600) ;
    ir.begin() ;
}

void loop()
{
    unsigned long ircode ;
    while (ir.available())

    {
        ircode = ir.read() ;
        Serial.println(ircode,HEX) ;
    }
}


A lib NECIRcv.h provê o objeto que lida com o receptor infravermelho. Ela se chama NEC mas é compatível cm outros sensores (o meu não é NEC).

A parte que proporcionou mais diversão foi o software do PC.

A "cara" do software é até simples, e dispensa maiores explicações:

Usando o Microsoft Office Interop, criei alguns objetos para abrir e manipular a apresentação:


Microsoft.Office.Interop.PowerPoint.Application ppApp = new Microsoft.Office.Interop.PowerPoint.Application();
ppApp.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
Presentations ppPresens = ppApp.Presentations;
Presentation objPres = ppPresens.Open(edFName.Text, Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue);
Slides objSlides = objPres.Slides;
Microsoft.Office.Interop.PowerPoint.SlideShowWindows objSSWs;
Microsoft.Office.Interop.PowerPoint.SlideShowSettings objSSS;

objSSS = objPres.SlideShowSettings;

objSSS.Run();
objSSWs = ppApp.SlideShowWindows;

Em seguida, a criação e parametrização da classe SerialPort, que vai receber os comandos do Arduino:

System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();
sp.PortName = edPorta.Text;
sp.BaudRate = 9600;
sp.Open();

Por fim o tratamento das mensagens do Arduino. Os códigos usados no switch dependem do modelo de controle remoto:

bool navigation = true;
DateTime now = DateTime.Now;
string lastCmd = string.Empty;
while (navigation)
{
    string cmd = string.Empty;
    if (sp.BytesToRead > 0)
    {
        cmd = sp.ReadLine().TrimEnd('\r');
        TimeSpan diff = DateTime.Now.Subtract(now);
        if (diff.Milliseconds > 200)
            now = DateTime.Now;
        else
            cmd = string.Empty;
    }
    switch (cmd)
    {
        case "BC4352AD":
            ppPresens[1].SlideShowWindow.View.Next();
            break;
        case "BD4252AD":
            ppPresens[1].SlideShowWindow.View.Previous();
            break;
    }
    System.Windows.Forms.Application.DoEvents();
}

Agora as imagens:

E um vídeo mostrando a "coisa" funcionando:

Amanhã é o teste real, dou aulas de manhã e à noite.

Esse projeto pode ser usado como base para outros, controlando outras aplicações. Pode-se transformar o controle remoto num mouse, controlando qualquer aplicação.

É isso!

Aqui, os fontes e o executável do aplicativo que roda no PC e controla o powerpoint a partir do Arduino: pptRemote.zip

Abracadabraço,

Mauro Assis

Exibições: 16490

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Luiz Paulo Toniazzo Martins em 14 março 2012 às 17:10
Acho bem legal para aprender a usar diferentes periféricos. Mto bom.
Comentário de Mauro Assis em 9 março 2012 às 11:02

... com a vantagem que nem me sinto culpado, pois Arduino, além de ser muito mais gostoso que sorvete, não engorda.

Comentário de eduardo ferro dos santos em 9 março 2012 às 10:46

Parabéns Mauro, excelente dinamica para motivar os alunos que ainda estão aprendendo a desenvolver. É como dar aula pra criança e o professor saboreando um sorvete refrescante. Estimula a todos a querer um pouco. Grande abraço. Eduardo Ferro 

Comentário de Euclides Franco de Rezende em 8 março 2012 às 11:58

Olá Mauro.

Tem que por esses alunos no "reforço" de sábado tambem...rsrsrsss...

O bom deste projeto é que se trata de pouco hardware e muito software, fazendo o pessoal queimar mais cinzenta que os dedos.

Até sabadão!

Comentário de Mauro Assis em 8 março 2012 às 10:15

Amigão, 

O teste foi um sucesso absoluto. Usei o mesmo controle do carro, e a distância deu. Os alunos adoraram, acho que o Lab vai vender mais pelo menos uns 15 kits depois da minha demo.

Vou usar em todas as aulas daqui prá frente.

Nos vemos no sabadão!

[],

Mauro Assis

Comentário de Euclides Franco de Rezende em 7 março 2012 às 18:24

Boa Mauro!!!

Estive presente no último Arduino no parque e ví o "produto" nascendo.

O Mauro realmente é um cara persistente.

Diga pra gente; como foi o teste de "verdade"? Outro controle foi mais "longe"?

Até o próximo Arduino no Parque!!!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço