Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Robótica Ciência da Computação Unigran * Softwares Utilizados Robolab: Transferência do FirmWare NQC: Linguagem de Programação para robô Lego. Bricx Command Center: Editar e testar o programa. Carregar o programa no robô. * Transmissor Componente que utiliza luz infra-vermelha para transmissão dos programas entre o computador e o RCX. * O LEGO Brick RCX CPU do robô. Permite até 5 programas armazenados na memória. Permite visualizar sensores. Controla motores. * O LEGO Brick RCX Visualiza Valores dos sensores Liga/desliga Executa/para programa Escolhe o programa a executar * A linguagem “Not Quite C” NQC * A linguagem NQC (“not quite C”) NQC é uma linguagem de programação desenvolvida por Dave Baum especialmente para robôs LEGO: Subconjunto de Linguagem C. NQC é fácil de usar. Programar um robô em NQC é muito mais fácil do que programar um computador. * NQC: aspectos básicos Cada programa em NQC deve ter uma “task main()” (tarefa principal): Ela inicia a execução do programa. Um programa pode ter diversas tarefas sendo executadas em “paralelo”: multitasking. Possui dois tipos de comandos: De controle do robô. De controle do fluxo do programa. * Exemplo 1 Meu primeiro programa NQC. Anda para frente e para trás. task main() { OnFwd(OUT_A); // Liga motor A OnFwd(OUT_C); // Liga motor C Wait(400); // Espera 4 segundos OnRev(OUT_A+OUT_C); // Reverte. Wait(400); // Espera 4 segundos Off(OUT_A+OUT_C); // Desliga motores. } * Comandos de controle do robô Comandos que acionam os sensores e atuadores do robô. Permitem ligar e desligar os motores, ajustar a potência dos mesmos. Permitem definir os sensores usados e ler os valores dos mesmos. Usados em conjunto com os comandos de controle de fluxo. * Entradas e Saídas Todo controle do robô é realizado sobre 3 entradas e 3 saídas. OUT_A, OUT_B e OUT_C: São as 3 saídas de controle do robô. SENSOR_1, SENSOR_2 E SENSOR_3: São as 3 entradas de sensores do robô. * Comandos de controle do motor OnFwd(OUT_A); Inicia a saída A Se um motor estiver conectado a porta A, ele será ligado no sentido direto com máxima velocidade. OnRev(OUT_A+OUT_C); Reverte as saídas A e C. Se existirem motores ligados a estas saídas, eles serão acionados no sentido reverso com máxima velocidade. * Comandos de controle do motor Off(OUT_A+OUT_C); Desliga os motores. SetPower(força). A força é um número inteiro entre 0 e 7: 7 é o mais rápido. 0 o mais lento, mas ainda com movimento. * Comando “wait” O comando wait faz com que a tarefa pare por um determinado tempo, dado em centésimos de segundos. Wait(400); Note que as saídas são mantidas no mesmo estado pelo tempo em que a espera durar. * Definindo um sensor Para definir um sensor é necessário especificar a porta e o tipo do sensor: SetSensor(SENSOR_2,SENSOR_TOUCH); Define um sensor de toque na porta 2. SetSensor(SENSOR_1,SENSOR_LIGHT); Define um sensor de luz na porta 1. Para usar o sensor: Use o nome da porta como variável: SENSOR_2 == 1 * Sensor de toque Usado para detectar toques ou barreiras. Retorna: 0 se aberto 1 se pressionado. O sensor mais simples possível * Exemplo sensor de toque Anda até bater em algo e o sensor de toque for pressionado: task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); until (SENSOR_1 == 1); Off(OUT_A+OUT_C); } * Sensor de luz Usado para cores em objetos, no chão e distâncias. Retorna: 0 mínimo. 80 máximo. Na prática: < 30 é preto > 50 é branco * Operadores Operadores relacionais: = =, <, <=, > , >= != (diferente) Operadores Booleanos: && (conjunção lógica) || (disjunção lógica) ! (negação) * Bricx Command Center * Templates * Fim Referência: Prof. Reinaldo Bianchi Centro Universitário da FEI - 2007 *