Placa Gogo
[Se preferir ver essa página em tela cheia, aperte a tecla F11]Durante um bom tempo tentei em vão fazer uma adaptação dos
comandos Gogo usados no MicroMundos para o SuperLogo.
Parte do que eu fazia sumia toda vez que eu salvava. Descobri mais
tarde que o programa não aceita projetos com mais de 64kb : (.
A solução é usar a dll do 'Roger' (criador da placa gogo).
Primeiro baixe o arquivo
GoGo DLL 11.
O arquivo deve ser descompactado na pasta windows/system32 (mas também funcionará se for descompactado na pasta em que foi instalado o SuperLogo).
Para facilitar a vida de quem não quer usar comandos pouco intuitivos, fiz uma adaptação. Veja o conjunto de comandos abaixo.
* Versão para SuperLogo:
* Versão para FMSLogo:
Os comandos acima são os mesmos usados no MicroMundos (a
ideia é quem já usou a placa gogo no micromundos
não sentirá muita diferença). Se quiser
experimentá-la, copie os comandos acima e cole-os em um
único documento (use o bloco de notas) e salve com o nome
gogo
na pasta
biblogo que se encontra no diretório do
SuperLogo. Note que essa pasta contém vários outros
arquivos, todos eles sem extensão. Faça o mesmo com o
arquivo gogo.txt que você criou (peça para renomear e
delete a extensão .txt). Feito isso, na próxima vez que
você iniciar o SuperLogo e escrever o comando
gogo a
placa poderá ser usada.
Exemplos de uso
* gogo [verifica conexão e prepara para usar a placa]
* atA liga [liga o dispositivo (led, motor, etc) que estiver conectado na saída A]
* atA desliga [desliga o dispositivo estiver conectado na saída A]
* atA ligapor 45 [liga o dispositivo (led, motor, etc) que estiver conectado na saída A e desliga-o após 45 segundos (tempo não muito preciso)]
* fixapoder 2 [muda a potência (valores de 1 a 7) que será usada nas saídas da placa]
* parala [inverte a polaridade do terminal fazendo que um motor gire para um lado ou para outro (seu complemento é o comando paraca)]
* mostre sensor2
[mostra o valor percebido pela placa no sensor 2 (o mais simples é
colocar dois fios e experimentar os resultados quando suas extremidades
estão unidas e quando não estão)]
* tchaugogo [desativa o uso da placa Gogo (faça isso quando for encerrar os trabalhos com a placa)]
* Confira outros detalhes no blog Eductil!
A lista de comandos abaixo foi tirada do sítio original da
Gogo (link acima) e é bastante útil para entender como
funciona a gogo.dll (pode estar desatualizada):
*Cada comando devolve (-1*ErrorCode) quando houver erro. Saiba
mais no final desta página.
Comandos Iniciais
- connect(NúmerodaPortaCom)
Abre a porta COM indicada.
connect(1) // abre COM1 (aquela que
usamos para conectar a placa Gogo)
- close()
Fecha a porta COM.
- doAdd(número1,
número2)
Pode ser usada como um teste de funcionamento da DLL. Ela
devolve a soma de dois números.
Comandos Básicos
- version()
Informa a versão da DLL.
- ping()
"Pinga" a placa GoGo ("pingar" é um termo usado em
informática quando, por exemplo, um computador A envia um sinal
para o computador B e esse responde (como num jogo de pingue-pongue, um
manda e o outro devolve).
Informa GOGO_SUCCESS
- beep()
A placa GoGo emite um "bip".
Informa GOGO_SUCCESS
- ledOn()
Acende o LED.
Informa GOGO_SUCCESS
- ledOff()
desliga o LED.
Devolve GOGO_SUCCESS
Comandos para Sensores
- sensor(sensor-número)
Devolve o valor (de 0 a 1023) do sensor sensor-número.
sensor(1)
// informa o valor do sensor1
- sensorMax(sensor-número)
Informa o maior valor que o sensor atingiu desde a última
operação sensorMAX().
- sensorMin(sensor-número)
Informa o menor valor que o sensor atingiu desde a última
operação sensorMIN().
Comandos de Controle do Motor (led, e outros dispositivos)
- motorOn()
Liga o(s) motor(es) ativo(s).
- motorOff()
Desliga o(s) motor(es) ativo(s).
- motorRd()
Muda a direção dos motor(es) ativos(s).
- motorThisway()
Estabelece uma direção absoluta para motor(es)
ativos(s).
- motorThatway()
Estabelece uma direção absoluta reversa (pro lado
contrário ao do comando acima) para motor(es) ativos(s).
- motorCoast()
O mesmo que motorOff() só que não freia o
motor.
- setMotorPower(intensidade)
Estabelece uma intensidade para o motor (valores de 0 a 7).
- talk2Motor(motor-bits)
Estabele motor(es) ativo(s). Cada bit em motor-bits
corresponde uma porta de motor.
talk2Motor(5)
// "fala" ao motor 1 e 3
Códigos de Erros e seus Significados
100 |
|
ERROR_NO_ERROR |
101 |
|
ERROR_OPEN_COM |
102 |
|
ERROR_COM_SETTINGS |
103 |
|
ERROR_COM_HANDSHAKING |
104 |
|
ERROR_SEND |
105 |
|
ERROR_SET_READ_TIMEOUT |
106 |
|
ERROR_SET_EVENT_MASK |
107 |
|
ERROR_NO_INCOMING_BYTES |
108 |
|
ERROR_READ |
109 |
|
ERROR_HEADER_NOT_FOUND |
110 |
|
INVALID_ACK_BYTE |
111 |
|
ERROR_WAIT_FOR_BYTE |
112 |
|
ERROR_READ_TIMEOUT |
113 |
|
ERROR_COM_PURGE |
114 |
|
ERROR_UPDATE_BUFFER |
115 |
|
ERROR_POWER_LEVEL_OUT_OF_RANGE |
210 |
|
ERROR_SENSOR_número_OUT_OF_RANGE |
211 |
|
POWER_LEVEL_OUT_OF_RANGE |
212 |
|
ERROR_UNEXPECTED |