Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« on: February 12, 2013, 04:48:56 am » |
Bom dia, ando a fazer um programita para quando receber um email o arduino acender um LED e mostrar num LCD o assunto e o nº de emails lidos. Basicamente tenho um programa no PC (feito em VB.net) que lê o Atom https://mail.google.com/mail/feed/atom do gmail e obtem a informaçao necessaria. A parte do computador ja está quase feita (encontrei na net um guia que ajudou muito) agora a parte do arduino neste momento so acende o LED ou apaga conforme houver emails ou nao. A informacao que o pc manda por serie vai ser do tipo: [nº emails por ler];[Assunto do email nº1];[assunto do email nº2];etc. E quero que o arduino mostre o nº de emails e os respectivos assuntos por isso vim aqui pedir um ajudita pois nao sei muito de programacao em arduino (por enquanto  ). O lcd que tenho é este https://www.sparkfun.com/products/10168
|
|
|
|
|
Logged
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 19
Posts: 2307
|
 |
« Reply #1 on: February 12, 2013, 06:13:50 am » |
Para isso vais precisar duma biblioteca para esse LCD...
Depois disso, tens de definir um protocolo para a transmissão de dados. Percebes o que quero dizer com protocolo de dados?
|
|
|
|
|
Logged
|
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o. Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum). Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.
Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #2 on: February 12, 2013, 07:26:21 am » |
Para isso vais precisar duma biblioteca para esse LCD...
Depois disso, tens de definir um protocolo para a transmissão de dados. Percebes o que quero dizer com protocolo de dados?
Eu ja sei mexer com o lcd e mostrar texto e imagens, por isso esse nao é o meu maior dos problemas  . Protocolo, do genero TCP ou FTP so que versao arduino (sei que nao é bem mas para questoes de exemplo)? Ja agora eis o codigo de teste que usei para saber se ha ou nao email, a parte do arduino: int outPin = 13; // Output connected to digital pin 12 int mail = LOW; // Is there new mail? int val; // Value read from the serial port
void setup() { pinMode(outPin, OUTPUT); // sets the digital pin as output Serial.begin(9600); Serial.flush(); }
void loop() { // Read from serial port if (Serial.available()) { val = Serial.read(); Serial.println(val); if (val == 'M') mail = HIGH; else if (val == 'N') mail = LOW; }
// Set the status of the output pin digitalWrite(outPin, mail); }
|
|
|
|
|
Logged
|
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #3 on: February 12, 2013, 08:10:30 am » |
Eu anexei um projeto que montei ontem para comunicar via serial com o arduino e apresentar o texto na serial. 1. Faça o upload para o arduino, no projeto já estão declarados os pinos do arduino para o LCD. 2. Para enviar dados para o arduino vc pode abrir o Console e digitar {coluna}{linha}{B ou qualquer outro caracter}{Texto a ser apresentado} Se vc colocar B ele vai apresentar o texto em caracteres grandes, centralizado. Seu programa pode enviar algo do tipo. 00B{NR MENSAGENS} 04 {SUBJECT da primeira mensagem} 05 {SUBJECT da segunda mensagem}
PS. Existem um códigos a mais no projeto, prq a comunicação entre os arduinos pode ser via I2C ou via SERIAL.
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #4 on: February 12, 2013, 08:27:39 am » |
Eu anexei um projeto que montei ontem para comunicar via serial com o arduino e apresentar o texto na serial. 1. Faça o upload para o arduino, no projeto já estão declarados os pinos do arduino para o LCD. 2. Para enviar dados para o arduino vc pode abrir o Console e digitar {coluna}{linha}{B ou qualquer outro caracter}{Texto a ser apresentado} Se vc colocar B ele vai apresentar o texto em caracteres grandes, centralizado. Seu programa pode enviar algo do tipo. 00B{NR MENSAGENS} 04 {SUBJECT da primeira mensagem} 05 {SUBJECT da segunda mensagem}
PS. Existem um códigos a mais no projeto, prq a comunicação entre os arduinos pode ser via I2C ou via SERIAL. Obrigado  O programo do PC ainda nao acabei, esse texto tem de aparecer todo numa linha, do genero: 00B{4} 04{Bla bla} 05{bla bla}? Ja agora o 04 e 05 sao ao acaso ou tem de ser essa a ordem Esqueca já compreendi. Nota o arquivo esta corrompido.
|
|
|
|
|
Logged
|
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #5 on: February 12, 2013, 08:37:06 am » |
Segue novo arquivo...
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #6 on: February 12, 2013, 10:50:03 am » |
Bom dia, ando a fazer um programita para quando receber um email o arduino acender um LED e mostrar num LCD o assunto e o nº de emails lidos. Basicamente tenho um programa no PC (feito em VB.net) que lê o Atom https://mail.google.com/mail/feed/atom do gmail e obtem a informaçao necessaria. A parte do computador ja está quase feita (encontrei na net um guia que ajudou muito) agora a parte do arduino neste momento so acende o LED ou apaga conforme houver emails ou nao. A informacao que o pc manda por serie vai ser do tipo: [nº emails por ler];[Assunto do email nº1];[assunto do email nº2];etc. E quero que o arduino mostre o nº de emails e os respectivos assuntos por isso vim aqui pedir um ajudita pois nao sei muito de programacao em arduino (por enquanto  ). O lcd que tenho é este https://www.sparkfun.com/products/10168Pode me passar o GUIA que você utilizou, pois o meu vou fazer em delphi que é a unica linguagem para desktop que proficiência. E depois partir para por em conjunto com um ethernet shield.
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #7 on: February 12, 2013, 01:27:01 pm » |
Pode me passar o GUIA que você utilizou, pois o meu vou fazer em delphi que é a unica linguagem para desktop que proficiência. E depois partir para por em conjunto com um ethernet shield.
Não é bem guia, é a junçao de um programa feito em vb.net para ler o Atom do GMail e de como usar o Serial no VB.net. Serial: http://www.lvr.com/serport.htm Gmail: http://www.dotnetcurry.com/ShowArticle.aspx?ID=292
|
|
|
|
|
Logged
|
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #8 on: February 13, 2013, 04:14:09 am » |
Segue novo arquivo...
Hoje tive tempo de voltar a montar o LCD no arduino e testar o seu programa, fiz as ligacoes com os mesmos pinos mas sempre que mando algo por serie nao faz nada o lcd. Exemplo: 00B{1}04 {TESTE}
|
|
|
|
|
Logged
|
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #9 on: February 13, 2013, 06:07:26 am » |
Esse é o que eu estava atualizando. Acho que o que mandei para vc estava apenas usando I2C. Esse agora funciona... Mas para cada comando, você deve mandar em uma linha com o NEWLINE, ele não entende comandos na mesma linha...
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #10 on: February 13, 2013, 07:45:03 am » |
Esse é o que eu estava atualizando. Acho que o que mandei para vc estava apenas usando I2C. Esse agora funciona... Mas para cada comando, você deve mandar em uma linha com o NEWLINE, ele não entende comandos na mesma linha...
Ha ok, o new line é acrescentar no fim "\n" E ja agora o que ligo no pino 11 e 12? Simplesmente nao consigo fazer com que algo aparece no arduino.
|
|
|
|
« Last Edit: February 13, 2013, 07:54:02 am by Dicamarques »
|
Logged
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 19
Posts: 2307
|
 |
« Reply #11 on: February 13, 2013, 07:54:47 am » |
|
|
|
|
|
Logged
|
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o. Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum). Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.
Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #12 on: February 13, 2013, 08:24:36 am » |
Ha ok, o new line é acrescentar no fim "\n" E ja agora o que ligo no pino 11 e 12? Simplesmente nao consigo fazer com que algo aparece no arduino. [/quote] O pino 11 vai para o PINO LED do 5110 Manda uma foto da sua protoboard. as vezes da para descobrir o q esta havendo Essa é a minha. 
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
Portugal
Offline
Newbie
Karma: 0
Posts: 7
|
 |
« Reply #13 on: February 13, 2013, 08:57:39 am » |
:O a minha montagem é um pouco mais fina  Agora uma duvida: tou a fazer uns testes em que mando algo por serie e mostre a mensagem no LCD, so que sempre que mando aparece apenas uma letra de cada vez e nao aparece a mensagem toda. //Display temperature and voltage in Nokia 5510 LCD
#define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter! //TMP36 Pin Variables int tempPin = 1; //the analog pin the TMP36's Vout (sense) pin is connected to //the resolution is 10 mV / degree centigrade with a //500 mV offset to allow for negative temperatures int tempReading; // the analog reading from the sensor char serial; char myString; // The pins to use on the arduino to connect the lcd #define PIN_SCE 7 #define PIN_RESET 6 #define PIN_DC 5 #define PIN_SDIN 4 #define PIN_SCLK 3 #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h>
// pin 7 - Serial clock out (SCLK) // pin 6 - Serial data out (DIN) // pin 5 - Data/Command select (D/C) // pin 4 - LCD chip select (CS) // pin 3 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);
#define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2
void setup() { // If you want to set the aref to something other than 5v analogReference(EXTERNAL); Serial.begin(9600); display.begin(); // init done // you can change the contrast around to adapt the display // for the best viewing! display.setContrast(50);
// display.display(); // show splashscreen // delay(2000); display.clearDisplay(); // clears the screen and buffer
// text display tests display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(10,20); display.println("Thermometer"); display.setCursor(10,30); display.println("by Diogo"); display.display(); delay(1500); display.clearDisplay(); } void loop() { String stringOne = "Hello String"; if(Serial.available()) { display.clearDisplay(); serial = Serial.read(); stringOne = String(serial); display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(10,10); display.println(stringOne); display.display(); delay(2000); display.clearDisplay(); }
display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(10,10); display.println("-.-"); display.display(); }
Para usar este codigo preciso usar a livraria da Adafruit. http://learn.adafruit.com/nokia-5110-3310-monochrome-lcd
|
|
|
|
|
Logged
|
|
|
|
|
Brasil
Offline
Sr. Member
Karma: 2
Posts: 306
|
 |
« Reply #14 on: February 13, 2013, 09:08:44 am » |
Bom, o problema é o seguinte, o serial = Serial.read(); stringOne = String(serial);
Aqui você está lendo apenas 1 letra de cada vez, e imprimindo ela. O Serial.read(), lê um caracter por vez. De uma olhada lá no meu projeto, e você vai ver que é criado um array de char, para guardar todas as letras da serial até chegar um '\10' que é o new line, ai depois imprime... while (Serial.available()) { DadoLido = Serial.read(); // Le o char da serial. if (DadoLido != 10) // Verifica se não é um NEWLINE { T_SerialDataRead = (char *)realloc(SerialDataRead, sizeof(char) * (SerialDataRead_Count + 1)); // Aumenta o tamanho do array SerialDataRead = T_SerialDataRead; SerialDataRead[SerialDataRead_Count] = DadoLido; // Guarda o caracter lido. SerialDataRead_Count++; } } if (DadoLido == 10) // Se for NEWLINE { ProcessaComando(); // entra na função para imprimir no LCD. }
|
|
|
|
|
Logged
|
4x Duemilanove (clone) Uno torrado (clone) Amiga 1200 40MB Windows XP
|
|
|
|
|