Aqui você encontrará meus projetos, dicas e pesquisas saiba mais
Apresentação e motivação do curso
Olá. Como combinado, hoje é o grande dia, início de tudo.
Apresento hoje um projeto simples, onde um programa em C controla um circuito eletrônico através da porta USB. O video criado basicamente demonstrará a interação direta entre uma porta USB (através do FT232BL) e um carrinho de controle remoto. O que fiz foi uma interface que permite enviar comandos ao carrinho pelo computador. Isso possibilitará controlar todos os motores do carrinho de forma simples e programada.
O objetivo é fazer com que o carrinho estacionado saia do local, e volte, porém de forma oposta. Por exemplo, ele estará estacionado com a traseira para a parede, e ao executar o comando, ele então sairá e voltará a estacionar no mesmo local, porém desta vez de frente para a parede.
Isso tudo para demonstrar o básico de interação entre a máquina e um hardware externo. Sempre achei fantástica a ideia de poder controlar dispositivos externos, como lâmpada, portas, motores, través de um computador, e em breve demonstrarei aqui como podemos fazer isso.
Acredito que o video servirá para dar uma inspiração maior, afinal não é tão simples programar em C. Exige muita vontade e paciência acima de tudo.
Imagens do projeto:
Aqui o controle original do carrinho (à esquerda) e somente a placa de controle com os fios soldados (à direita).
Aqui o código fonte do programa:
#include <stdio.h>
#ifdef __WIN32__
#define sleep(x) Sleep(x)
#endif
#include "ftdi.h"
#define FRONT 2
#define REAR 4
#define RIGHT 8
#define LEFT 16
#define FRONT_RIGHT 10
#define FRONT_LEFT 18
#define REAR_RIGHT 12
#define REAR_LEFT 20
struct ftdi_context ftdic;
void stopCommand()
{
fflush(stdout);
ftdi_write_data(&ftdic, 0, 1);
}
void msleep(int ms) {
struct timespec time;
time.tv_sec = ms / 1000;
time.tv_nsec = (ms % 1000) * (1000 * 1000);
nanosleep(&time,NULL);
}
void goCar(int type, int msTime)
{
int f;
char buf[1];
if (ftdi_init(&ftdic) < 0)
{
fprintf(stderr, "falha ao iniciar ftdi_init\n");
exit(-1);
}
f = ftdi_usb_open(&ftdic, 0x0403, 0x6001);
if (f < 0 && f != -5)
{
fprintf(stderr, "Dispositivo ftdi não encontrado: %d (%s)\n", f, ftdi_get_error_string(&ftdic));
exit(-1);
}
printf("ftdi aberto com sucesso: %d\n",f);
buf[0] = type;
printf("enabling bitbang mode\n");
ftdi_set_bitmode(&ftdic, 0xFF, BITMODE_BITBANG);
fflush(stdout);
ftdi_write_data(&ftdic, buf, 1);
msleep(msTime);
stopCommand();
printf("disabling bitbang mode\n");
ftdi_disable_bitbang(&ftdic);
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
}
int main(int argc, char **argv)
{
goCar(FRONT_RIGHT, 700);
goCar(RIGHT, 250);
goCar(REAR, 150);
msleep(800);
goCar(REAR, 500);
goCar(REAR_LEFT, 300);
goCar(LEFT, 100);
goCar(FRONT, 100);
msleep(800);
goCar(FRONT, 200);
goCar(FRONT_RIGHT, 150);
goCar(RIGHT, 100);
goCar(FRONT, 130);
}
Confira aqui o projeto funcionando:
Como dito anteriormente, estou usando o livro “C completo e total” como base para este curso. O livro promete muito, está numa linguagem simples de entender e é muito inspirador. Ele tem 30 capítulos incluindo apêndices. Se um capítulo for passado por aula, então em cerca de 8 meses o curso estará terminado.
Tentarei sempre trazer exemplos práticos de uso da linguagem, o post acima é um bom exemplo disto. Tenho muito a aprender ainda e tenho certeza de que este será um curso de muita utilidade para mim e todos aqueles que de uma forma ou outra desejam aprender essa incrível linguagem que é o C.
janeiro 29th, 2011 - 21:24
Gostei de sua iniciativa, já fiz alguns programas em C para pic e outros microcontrolador
Era meu passa tempo eletrônica e programação C, ainda lido com C mas em outra area
fevereiro 8th, 2011 - 08:05
Não me lembro como descobri seu blog, acho que foi pelo site Linha de Código.
Gostei da iniciativa de ensinar C sempre quis aprender essa linguagem, alias sempre quis ser programador. Fiz curso tecnico em informatica pelo SENAC e la “aprendi” a programar em VB.Net.
Sou iniciante em programar, mas sempre corro atraz de tutoriais e sites sobre o assunto.
Espero que voce mantenha seu blog e sempre o atualiaze, ja varios blogs sobre o assunto começar e depois o “dono” nunva mais atualizar. Prometo ser seguidor mas voce vai ter que manter o blog.
Abraços.
junho 27th, 2011 - 20:40
admiro trabalhos assim, esta de parabens, eu que nunca programei ate me animei, entendo pouco de eletronica, vou acompanhar a evolução e estudar a linguagem C, estarei aqui. Em tempo, o que o Marco Aurelio comentou em manter o blog, reforço o que ele comentou
Abraços
junho 27th, 2011 - 21:41
Olá Constantino, fico feliz que estejas também com interesse em aprender essa maravilhosa linguagem de programação.
Pausei um pouco o curso de programação em C, porém irei retornar semana que vem, nas férias. Ficarei aguardando novos comentários e eventuais dúvidas.
Abraços