80 likes | 167 Views
Lição 4: Comunicação e Processamento paralelo Soluções de Programação: RoboLab programado com NQC. Exercício 1. Sempre o robô deve ir para frente (fwd) por 1 seg. e irá realizar um giro para o lado do motor C por 0,85 seg.
E N D
Lição 4: Comunicação e Processamento paraleloSoluções de Programação: RoboLab programado com NQC
Exercício 1 Sempre o robô deve ir para frente (fwd) por 1 seg. e irá realizar um giro para o lado do motor C por 0,85 seg. Sempre que o sensor 1 for pressionado, o robô irá para trás (rev) por 0,5 seg. e irá realizar um giro por 0,85 seg. para o lado do motor A, em seguida irá para a frente.
Exercício 1: Solução NQC Tarefa principal task main() {SetSensor(SENSOR_1,SENSOR_TOUCH); start check_sensors; while (true) {OnFwd(OUT_A+OUT_C); Wait(100); OnRev(OUT_C); Wait(85); } } task check_sensors() {while (true) {if (SENSOR_1 == 1) {OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); Wait(85); OnFwd(OUT_C); } }} Chama a 2ª Tarefa 2ª Tarefa, realizada em paralelo
Exercício 2 Sempre o robô deve realizar um movimento de “quadrado”. Sempre que o sensor 1 for tocado, o robô deve ir para trás e girar no sentido contrário do “quadrado”.
Exercício 2: Solução NQC A entrada 1 tem um sensor de contato. task main() {SetSensor(SENSOR_1,SENSOR_TOUCH); start check_sensors; start move_square; } task move_square() {while (true) {OnFwd(OUT_A+OUT_C); Wait(100); OnRev(OUT_C); Wait(85);} } task check_sensors() {while (true) {if (SENSOR_1 == 1) {stop move_square; OnRev(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A); Wait(85); start move_square;} }} Inicia os dois procedimentos Faz o robô realizar um quadrado Inicia e finaliza o movimento de quadrado
Mensagens • Os comandos disponóveis para o kit, com relaçãoo a comunicação, são: • SendMessage(n) : transmite um valor de 0 a 255, por infra-vermelho. Os outros robôs recebem a mensagem e a armazenam. • Message() : utilizado para receber mensagem • ClearMessage() : torna o valor da mensagem recebida igual a 0. • SetTxPower(TX POWER LO) ou SetTxPower(TX POWER HI) : seta • a potência de transmissão dos robôs. Dê preferência a potência baixa.
Exercício 3 • O robô mestre ( master ) deve enviar 3 comandos diferentes a cada 2 seg. • O escravo ( slave )deve ir para frente, depois ir para trás e depois parar, ao comando do mestre
task main() // MASTER { SendMessage(1); Wait(200); SendMessage(2); Wait(200); SendMessage(3); } task main() // SLAVE { while (true) { ClearMessage(); until (Message() != 0); if (Message() == 1) {OnFwd(OUT_A+OUT_C);} if (Message() == 2) {OnRev(OUT_A+OUT_C);} if (Message() == 3) {Off(OUT_A+OUT_C);} } } Exercício 3: Solução NQC Este PRGM deve ser instalado no robô mestre Este PRGM deve ser instalado no robô escravo