Forum Arduino em Português !!

David Cuartielles , um dos criadores do Arduino , anunciou hoje a criação de uma área no forum para os usuários que falam português. Todos os tiverem dúvidas , sugestões , projetos que desejem compartilhar ou anunciar workshops ou apresentações, deixem um post no site. Quem puder ajudar a tirar dúvidas dos amigos sinta-se à vontade. Eu estarei lá ajudando a esclarecer as duvidas de quem estiver inciando.

Links:

Forum Arduino em Portugues

20 thoughts on “Forum Arduino em Português !!”

  1. ola tenho um problema e axo q vc talvez consiga ver meu erro …tenho um projeto com arduino que setoriza a casa em 3 ambientes e envia mensagem sms de acordo com que cada sensor do ambiente disparar..ou seja disparou sensor 1 manda a msg informando invasão no setor 1 e assim por diante quando 2 ou mais disparam ao msm tempo envia a msm mensagem de q 2 ou mais sensores dispararam mas meu codigo so da erro …alguem pod me ajudar e se souberem enviar meu erro no meu e-mail….netobarto@hotmail.com
    eis o codigo
    int ledPin = 13;
    int senquarto = 2;
    int sensala = 3;
    int senentrada = 4;
    int rx = 1;
    int tx = 0;
    int msg;

    void setup() {
    pinMode(senquarto, INPUT);
    pinMode(sensala, INPUT);
    pinMode(senentrada, INPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(rx, INPUT);
    pinMode(tx, OUTPUT);
    Serial.begin(4800);
    }

    int Alarme(){
    if ((digitalRead(senentrada) == HIGH) && (digitalRead(sensala)== LOW) && (digitalRead(senquarto)==LOW))
    {
    msg=1;

    if ((digitalRead(senentrada) == LOW) && (digitalRead(sensala)== HIGH) && (digitalRead(senquarto)==LOW))
    {
    msg=2;

    if ((digitalRead(senentrada) == LOW) && (digitalRead(sensala)== LOW) && (digitalRead(senquarto)==HIGH))
    {
    msg=3;

    if ((digitalRead(senentrada) == HIGH) && (digitalRead(sensala)== HIGH) && (digitalRead(senquarto)==LOW))
    {
    msg=4;

    if ((digitalRead(senentrada) == HIGH) && (digitalRead(sensala)== LOW) && (digitalRead(senquarto)==HIGH))
    {
    msg=5;

    if ((digitalRead(senentrada) == LOW) && (digitalRead(sensala)== HIGH) && (digitalRead(senquarto)==HIGH))
    {
    msg=6;

    if ((digitalRead(senentrada) == HIGH) && (digitalRead(sensala)== HIGH) && (digitalRead(senquarto)==HIGH))
    {
    msg=7;

    return msg;
    }

    switch (msg)
    {

    case 1:
    digitalWrite(ledPin, HIGH);
    Serial.begin(4800);
    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”97381448″”);
    delay(500);
    Serial.println(“entrada”); //sensor da entrada
    Serial.println(26,BYTE);
    delay(4000);

    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”96063124″”);
    delay(500);
    Serial.println(“entrada”); //sensor da entrada
    Serial.println(26,BYTE);
    delay(300000);
    break;

    case 2:
    digitalWrite(ledPin, HIGH);
    Serial.begin(4800);
    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”97381448″”);
    delay(500);
    Serial.println(“sala”);
    Serial.println(26,BYTE);
    delay(4000);

    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”96063124″”);
    delay(500);
    Serial.println(“sala”);
    Serial.println(26,BYTE);
    delay(300000);
    break;

    case 3:
    digitalWrite(ledPin, HIGH);
    Serial.begin(4800);
    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”97381448″”);
    delay(500);
    Serial.println(“quarto”);
    Serial.println(26,BYTE);
    delay(4000);

    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”96063124″”);
    delay(500);
    Serial.println(“quarto”);
    Serial.println(26,BYTE);
    delay(300000);
    break;
    case 4:
    case 5:
    case 6:
    case 7:
    digitalWrite(ledPin, HIGH);
    Serial.begin(4800);
    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”97381448″”);
    delay(500);
    Serial.println(“sala”);
    Serial.println(26,BYTE);
    delay(4000);

    Serial.println(“at+cmgf=1”);
    delay(500);
    Serial.println(“at+cmgs=”96063124″”);
    delay(500);
    Serial.println(“sala”);
    Serial.println(26,BYTE);
    delay(300000);
    break;

  2. Ernesto,
    Voce não precisa fazer as definições:
    .
    int rx = 1;
    int tx = 0;
    .
    pinMode(rx, INPUT);
    pinMode(tx, OUTPUT);
    .
    Estas instruçoes são desnecessárias e estão provavelmente impedindo que voce use estes pinos para a comunicação serial. Sugiro que voce olhe o site do Arduino onde é explicado o funcionamento da Serial http://arduino.cc/en/Reference/Serial.
    O forum do Arduino em portugues fica no link http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?board=Portugues . Aqui no blogdoje ainda não disponibilizo essa ferramenta.
    De qualquer forma sugiro uma estratégia de teste : divida o seu projeto em pequenas partes com as funcionalidades principais e as teste individualmente com pequenos programas e só ao ter certeza que todas elas estão funcionando passe a testar o projeto como um todo.
    Por exemplo: teste inicialmente cada sensor e verifique se o seu programa reconhece o seu acionamento atraves de um led. Depois verifique se consegue mandar uma mensagem SMS de teste e se consegue recebe-la em seu celular. Após, teste somente com um sensor conectado e seu acionamento gerando uma mensagem SMS. Após vá agregando as funcionalidades até testar o sistema inteiro.
    Boa Sorte.

  3. Olá, gostaria de saber o seguinte : eu poderia controlar o sinal de 4 sensores ultrasônicos através de um único arduino ?

  4. Ulisses,
    Se a saida do sensor for analógica, voce pode colocar até 6 nas portas analógicas de 0 a 5. Se for digital voce pode colocar um numero maior usando os pinos de saida digital. De uma pesquisada no datasheet do sensor para identificar como ele informa que está próximo de algum obstáculo.
    Abs

  5. Estou precisando controlar um robô (aparador de grama) por GPS usando minha Arduino e o receptor SKM53, porém estou encontrando dificuldades ao programar… a ideia é definir 4 pontos ou seja delimitar a área que será varrida, bem, através de um comando por botão… exemplo: levo o robô até o primeiro ponto e pressiono o botão, ele emiti um sinal sonoro, lê a coordenada atual do GPS e armazena na arduino, o mesmo ocorre com os outros 3 pontos, a partir disso libero o robô em qualquer lugar ele se localiza e se move até o ponto inicial (como referenciar o robo? como mover o robo sem que ele sai da trajetória? e se sair como corrigi-la?, é possivel trabalhar com latitude e longitude, seria possíveis identificar a posição do robo em graus para definir a frente do robo?), além disso ele terá um sensor infra para localizar objetos a frente (como criar esta interrupção?)… como podem ver estou precisando de muita ajuda!!! qualquer coisa já ajuda!!! desde já obrigado…

  6. Pedro ,
    O mais trabalhoso do seu projeto eu acredito que seja inserir as coordenadas e realizar os calculos de direção a seguir , verificar se está indo corretamente no caminho, etc.
    Sugiro voce pesquisar no site http://diydrones.com/ . O site é especializado na construção de veiculos autonomos especialmente os que usam GPS para se orientarem. Lá tem um monte de referencias para softwares, técnicas e tutoriais principalmente para o “controle de missão” que eu entendi ser a sua necessidade maior. Boa sorte !!

  7. Muito obrigado!!!

    Estarei agora mesmo pesquisando e estarei posicionando o sucesso de cada etapa…
    Parabéns pelo blog!

    valeu!

  8. Montei um primeiro programa!
    hoje é o terceiro dia que estou estudando sobre esta linguagem… bem eu nunca programei nada!!! e nunca tinha vista este tipo de linguagem… fiz este programa embasado nas pesquisas que fiz.. acredito que devem haver vários erros… e tenho algumas dúvidas!
    passei a tarde toda pesquisando e foi o melhor que consegui até agora!

    O que já fiz foi salvar os 4 pontos… e ao soltar o aparador no chão, ele se referencia e corrigi o angulo, nos próximos dias estarei tentando fazer com que ele se mova ate o ponto corrigindo sem a posição…

    não entendi direito o que são as bibliotecas e como funcionam
    ainda não sei colocar interrupções… dos sensores infra (para desviar)
    e não sei se a funções matemáticas estão certas… se assim mesmo que faz?

    Por favor, da uma olhada e me mostre os erros básicos…

    //*Aparador de grama

    #include “ObjMemb.h”
    #include
    #include
    #include “WProgram.h”
    #include

    void main(){

    // declaracao
    int receptorGps = 0; // rx pin
    int button = 2;
    int motorApin1 = 3;
    int motorBpin1 = 4;
    int motorCpin1 = 5;
    int busina = 12;
    int p1, p2, p3, p4, p5, p6, p7, p8 // pontos latitude, longitude
    int latRef;
    int lonRef;
    int latAtual;
    int lonAtual;
    int raiz;
    int addition (int a, int b)

    void setup(){
    Serial.begin(9600);
    Serial1.begin(4800);
    pinMode(receptorGps,INPUT);
    pinMode(button,INPUT);
    pinMode(motorApin1,OUTPUT);
    pinMode(motorBpin1,OUTPUT);
    pinMode(motorCpin1,OUTPUT);
    pinMode(busina,OUTPUT);
    }
    // Ciclo para armazenamento
    // Confirmar a entrada de dados do GPS
    (serial1.available()0>){
    // Armazenar variáveis de entrada do gps em p1 p2 p3 p4
    // Cria uma instancia de um objeto NMEA
    #include
    NMEA gps(GPRMC);

    if (Serial.available() > 0 ) {
    // Lê caracteres vindos do GPS
    char c = Serial1.read();
    // Verifica se o valor recebido e uma sentença GPS valida
    if (gps.decode(c)) {
    // Verifica se o posicionamento GPS esta ativo
    if (gps.gprmc_status() == ‘A’) {
    if (button = 1){
    digitalWrite(busina, HIGH);
    delay (2000);
    digitalWrite(busina, LOW);
    p1= Serial(gps.gprmc_latitude());
    p2= Serial(gps.gprmc_longitude());
    }
    }
    }
    }
    if (Serial1.available() > 0 ) {
    char c = Serial1.read();
    if (gps.decode(c)) {
    if (gps.gprmc_status() == ‘A’) {
    if (button = 1){
    digitalWrite(busina, HIGH);
    delay (2000);
    digitalWrite(busina, LOW);
    p3= Serial(gps.gprmc_latitude());
    p4= Serial(gps.gprmc_longitude());
    }
    }
    }
    }
    }
    if (Serial1.available() > 0 ) {
    char c = Serial1.read();
    if (gps.decode(c)) {
    if (gps.gprmc_status() == ‘A’) {
    if (button = 1){
    digitalWrite(busina, HIGH);
    delay (2000);
    digitalWrite(busina, LOW);
    p5= Serial(gps.gprmc_latitude());
    p6= Serial(gps.gprmc_longitude());
    }
    }
    }
    }
    }
    if (Serial1.available() > 0 ) {
    char c = Serial1.read();
    if (gps.decode(c)) {
    if (gps.gprmc_status() == ‘A’) {
    if (button = 1){
    digitalWrite(busina, HIGH);
    delay (2000);
    digitalWrite(busina, LOW);
    p7= Serial(gps.gprmc_latitude());
    p8= Serial(gps.gprmc_longitude());

    digitalWrite(busina, HIGH);
    delay (3000);
    digitalWrite(busina, LOW);
    delay (3000);
    digitalWrite(busina, HIGH);
    delay (3000);
    digitalWrite(busina, LOW);
    delay (3000);
    digitalWrite(busina, HIGH);
    delay (3000);
    digitalWrite(busina, LOW);
    if (button =1){
    digitalWrite(busina, HIGH);
    delay (3000);
    digitalWrite(busina, LOW);
    delay (3000);
    digitalWrite(busina, HIGH);
    delay (3000);
    digitalWrite(busina, LOW);
    delay (3000);
    digitalWrite(busina, HIGH);
    delay (5000);
    digitalWrite(busina, LOW);
    }
    }
    }
    }
    }
    // Criar (Declarar) interrupcao para o sensor de mercúrio

    // Criar (Declarar) interrupcao para o sensor de presença e iniciar ciclo de desvio

    // referenciando

    if (Serial1.available() > 0 ) {
    char c = Serial1.read();
    if (gps.decode(c)) {
    if (gps.gprmc_status() == ‘A’) {
    digitalWrite(busina, HIGH);
    delay (2000);
    digitalWrite(busina, LOW);
    latAtual=Serial(gps.gprmc_latitude());
    lonAtual=Serial(gps.gprmc_longitude());

    digitalWrite(motorApin1,1);//frente x metros
    digitalWrite(motorBpin1,1);
    digitalWrite(motorCpin1,0);
    delay(7000);
    }
    }
    }
    }
    if (Serial1.available() > 0 ) {
    char c = Serial1.read();
    if (gps.decode(c)) {
    if (gps.gprmc_status() == ‘A’) {
    latRef=Serial(gps.gprmc_latitude());
    lonRef=Serial(gps.gprmc_longitude());
    if (lonRef>lonAtual){
    lat=latAtual-latRef;
    lon=lonAtual-lonRef;
    lat=lat*lat;
    lon=lon*lon;
    a=lat; // Cateto oposto
    b=lon; // Cateto adjacente
    x=a+b;
    raiz=sqrt(x); // raiz quadrada = hipotenusa
    b=raiz
    x=a/b
    x=asin(x); // inversa da raiz
    // com o angulo faremos a correção
    x=x*100 // 100 constante de relação entre velocidade e distancia angular
    digitalWrite(motorApin1,1);
    digitalWrite(motorApin2,0);
    digitalWrite(motorCpin1,0);
    delay(x);

    if (lonReflonAtual){
    // virar 180 graus
    // ir ate o primeiro ponto

    if (lonRef<lonAtual){
    // seguir direto ate o primeiro ponto (a direita)
    }
    }
    }

  9. Pedro,
    Voce ja tem o Arduino e o receptor GPS em mãos ?
    Se voce já está com eles voce poderá desfrutar do melhor que o Arduino proporciona que é implementar , testar imediatamente no próprio Arduino, consertar o que deu errado e começar de novo. Não tenha medo , teste no próprio Arduino. Minha sugestão é não comece implementando tudo d euma vez só. Sugiro começar pela implementação do GPS que é o mais trabalhoso e que demandará mais estudo, mas mesmo assim comece recebendo os dados NMEA e identificando o que interessa , armazenando , depois implemente uma forma de inserir um ponto de referencia e fazer os cálculos do ponto de referencia em relação aos ponto atual informado pelo GPS . A cada sucesso que voce tiver implemente mais um funcionalidade , como se estivesse construindo uma cebola de dentro para fora. Voce terá menos problemas para lidar a cada interação e não ficará perdido em meio a um monte de problemas de sensores , gps , cálculos de coordenadas geodésicas para resolver ao mesmo tempo.
    O site Arduino.cc é o melhor fonte para voce conseguir informações sobre todas as bibliotecas principais do Arduino.
    Divirta-se com o seu projeto.

  10. Obrigado!!!

    Vou finalizar a parte mecânica! alias… já está praticamente pronto… acredito que até este final de semana poderei coloca-lo em prática.

    Vou seguir as orientações de não implementar muito e testar o que funciona para depois implementar!

    Fiz mais uma parte do programa, mais ainda tenho muitas dúvidas referente aos comandos, se estão certos… ou se não está faltando algo…
    Procuro pesquisar bastante mais não consigo compreender direito os exemplos e as explicações e os termos usados…

    O site que você me passou é muito bom, mas não consigo ter capacidade técnica para avaliar o que estão dizendo, é bem difícil entender os códigos, eles não dão detalhes, pois, tratam com naturalidade… fazem para programadores mais experientes!

    Você saberia de alguma apostila básica (bem intuitiva) que possa me ajudar nesse inicio de caminhada!

    Mais uma vez obrigado!!!

  11. Pedro,
    Infelizmente ou melhor felizmente voce vai precisar adquirir experiencia estudando e testando os exemplos dos que ja conseguiram fazer funcionar e buscar material de aprendizado sobre os pontos em que voce está deficiente. O melhor disto é o aprendizado que voce vai adquirir enquanto segue o caminho ate o seu objetivo. Parece papo de mestre do Kung Fu Panda mas é a pura verdade.

  12. Oi

    Atualmente estou fazendo um programa aonde eu preciso de saber qual o ano, mes, dia e hora. Tentei ver como fazer isso no site do Arduino, porémnão entendi muito do que foi passado la, nem de como utilizar as bibliotecas Time e DateTime, desta forma peço ajuda para que me expliquem o básico do básico de como utilizar estas bibliotecas.

    Obrigado

  13. Prezados, estou tendo um pequeno problema na instalação do Arduino.
    Desde a primeira vez que conectei o arduino na porta paralela o led do pino 13 começou a piscar e nunca parou. Ja apertei no reset, instalei e desistalei os drivers e continua sempre piscando como se estivesse um programa rodando nele. O outro problema é que não aparece a pasta applet para que eu possa utilizar o arquivo .hex.
    Quem puder ajudar, agradeço antecipadamente!

  14. Ola Rodrigo ,
    Verifique no menu Tools > Board da IDE ARDUINO , se voce selecionou o nome de placa equivalente a sua e no menu Tools > Serial Port se voce selecionou a porta de comunicação correta , conectada ao seu Arduino.
    Boa sorte !!!

  15. Prezados, consegui desenvolver alguns códigos para o meu Arduino UNO, estou usando o programa Arduino0022 em um PC com Windows 7 de 64 bits. Entretanto, ainda não consigo localizar a pasta applet quando faço o uploading de um sketch. Já vasculhei tudo e não encontro essa bendita pasta.
    Queria trabalhar com o arquivo .hex no PROTEUS.
    De atemão agradeço todo tipo de ajuda!

    atn

  16. Caro. Amigo
    To com um problema em fazer um programa em arduino para colocar 4 chaves para gerar um codigo para abrir uma porta. E pode haver 2 acionamentos em sequencia ou uma repetição. e depois se o codigo for o correto acionar um led, senao acionar outro led. Agradeço se pode me ajudar…

Comments are closed.