Pages: 1 [2] 3   Go Down
Author Topic: piccola domandina su I2C  (Read 924 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mah in verità nemmeno io.......cmq appena ho decommentato il Serial.begin ha smesso di dare i caratteri strani, che si vedevano sin dalla fase di setup, quando stampava "Starting System"

Code:
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad_I2C.h>
#include <Keypad.h>
#include "sms.h"
#include "SIM900.h"
#include "call.h"

SMSGSM sms;
CallGSM call;

char position; 
char phone_number[20];
char sms_text[160];
boolean started=false;
byte stat=0;

LiquidCrystal_I2C lcd(0x20,16,2);

#define I2CADDR 0x24

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {3, 2, 1, 0};

Keypad_I2C customKeypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS, I2CADDR);

char password[5] = "1234";
char tmpKey[10];
int tmpKeyIndex = 0;
boolean login, a, aa, b, bb, c, cc;
int temp;
String mess;

void setup()
{
 
  lcd.init();                     
  lcd.backlight();
 
  pinMode(sensAA, INPUT);
  digitalWrite(sensAA, LOW);
 
 
  customKeypad.begin( );
  //Serial.begin(9600); ----------------->qui  ho decommentato
  lcd.print(F("Starting system"));
 if (gsm.begin(9600)){
     lcd.setCursor(0,1);
     lcd.print(F("GSM status:READY"));
     started=true; 
  }else { lcd.setCursor(0,1);
          lcd.print(F("GSM status:IDLE"));
  }
  delay(500);
  lcd.clear();
};

void loop()
{
 
  temp = analogRead(0);
  temp = (5.0 * temp * 100.00) / 1024.0;
 
  checkALARM();
 
  if (!login) {lcd.setCursor(0,0);
               lcd.print(F("Password:"));
               lcd.setCursor(0,1);
               lcd.print(mess);
               lcd.print(F("  T:"));
               lcd.print(temp);
               lcd.print(F("  "));
               }
               
  char Key = customKeypad.getKey();
  if (Key){
      tmpKey[tmpKeyIndex] = Key;
      lcd.setCursor((9+tmpKeyIndex),0);
      tmpKeyIndex++;
      lcd.print(Key);
       
   
      if (String(Key)=="#") { lcd.setCursor(0,0);
                              lcd.print(F(" disconnesso")); 
                              delay(500);
                              lcd.clear();
                              login = false;
                              tmpKeyIndex = 0;}
                             
      if (String(Key)=="*") {         
        if (checkPass() || login == true) {
            lcd.setCursor(0,1);
            lcd.print(F("comando: "));
            checkCMD(String(tmpKey));
            login = true; }
          else {lcd.setCursor(0,1);
                lcd.print(F(" Password errata"));
                delay(500);
                lcd.clear();
                login = false; }
                   
         tmpKeyIndex = 0;
      }
     
  }

ora solo se premo il carattere  # mi compaiono i caratteri strani

« Last Edit: November 07, 2013, 05:46:05 pm by tronicman » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22804
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) perché includi le lib <Keypad_I2C.h>  e <Keypad.h>? La prima esclude l'altra.
2) forse la seriale è usata per il debug da una delle tante lib incluse.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se non la includo mi da:

ALLARME_i2c:45: error: ‘makeKeymap’ was not declared in this scope
ALLARME_i2c.ino: In function ‘void loop()’:
ALLARME_i2c:101: error: ‘class Keypad_I2C’ has no member named ‘getKey’


e poi le due librerie keypad sono incluse anche nell esempio
« Last Edit: November 07, 2013, 06:03:58 pm by tronicman » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22804
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La Keypad_I2C che conosco io include già di suo la Keypad e la Wire:
Code:
#include "Keypad.h"
#include "Wire.h"

https://github.com/joeyoung/arduino_keypads/tree/master/Keypad_I2C
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se apri l'esempio CustomKeypad_I2C.ino  nel link che mi hai postato ci sono entrambe le librerie incluse

Code:
/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
Use with I2C i/o G. D. (Joe) Young Feb 28/12
*/
#include <Keypad_I2C.h>
#include <Keypad.h> // GDY120705
#include <Wire.h>
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22804
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho letto le note, hai ragione tu.  smiley-sweat
Quote
To use the Keypad_xxx libraries requires that the Keypad library be present and its header <Keypad.h> be included within your sketch.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

continuando a fare prove.....sempre piu improbabili......mi è venuta come la sensazione che il problema provenisse dall' alimentazione.

Il mio progetto prevede un alimentatore 12V che alimenta il mio Arduino Mega (Vin GND) + un regolatore di tensione (preso da Arduino Basic Connections 12V -> 5V per non attingere tutto dall'arduino)  + shield GSM + shield 4 Relay + circuito I2C che gestisce LCD e Keypad.

-Se accendo il tutto senza il cavo usb inserito nel Arduino i caratteri strani si presentano subito, già nelle prime righe del setup dove stampo "Starting System" senza riuscire a vedere la seconda riga dove stampo "GSM: ready".......aspetto qualche secondo, premo il tasto Reset di arduino e parte tutto arrivando al loop.

-Se invece accendo il tutto con il cavo usb inserito nell'arduino mi salta i problemi iniziali arrivando al loop in modo corretto.

Comunque vada se premo il tasto # inizia a sbarellare



vorrei aggiungere che il 7805 che regola i 12v è alettato con un dissipatore di alluminio di dim. 5x3cm alto 1,5cm e scalda di brutto

ho una porzione di codice che legge la temp. proveniente da un LM35......senza usb collegata scrive 8°-9° (strano sono troppo pochi cmq)......se collego l'usb 10°-11°........se la stacco immediatamente continua riscrive 8°-9°
« Last Edit: November 08, 2013, 04:35:39 pm by tronicman » Logged

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5898
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La variazione sulla lettura analogica non ti sta indicando una differenza di temperatura, ma ma differenze si due alimentatori perché cambia il riferimento pure il calcolo. Monitora la tensione con un tester
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La variazione sulla lettura analogica non ti sta indicando una differenza di temperatura, ma ma differenze si due alimentatori perché cambia il riferimento pure il calcolo. Monitora la tensione con un tester


cioè guardo se ci sono variazioni sull'erogazione di corrente sia sull'uscita dell ali a 12v che del regolatore a 5v......devo vedere se rimangono stabili ?


aggiungo una info:

AVR Memory Usage
----------------
Device: Unknown

Program:   22628 bytes
(.text + .data + .bootloader)

Data:       2188 bytes
(.data + .bss + .noinit)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22804
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

aggiungo una info:

AVR Memory Usage
----------------
Device: Unknown

Program:   22628 bytes
(.text + .data + .bootloader)

Data:       2188 bytes
(.data + .bss + .noinit)

Tombola!
La SRAM del 328 è di soli 2048 byte. Tu già all'avvio hai dei dati che sicuramente andranno salvati in porzioni di memoria inesistente, con tutti i problemi del caso.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho un Atmega 2560.....quanti byte ha??
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22804
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Come non detto, la MEGA ha 8K di RAM
Logged


0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5898
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

x tronic: non credo sia il problema delle alimentaizoni, ti stavo solo spiegando perche' vedi quella variazione sulla temp, e' normale quando passi da un alimentazione ad un altra visto che e' un sensore analogico e ti cambia la tensione.
« Last Edit: November 10, 2013, 04:19:29 am by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 0
Posts: 97
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ragazzi forse ce l'ho fatta !!!!!!!

Ho iniziato a togliere piu codice possibile, tutto il loop e parti del setup......per esclusione sono arriato al dannatissimo

lcd.backlight();

tolto quello nonho piu caratteri strani ne all'avvio e nemmeno se premo il famoso tasto # che sembrava essere maledetto, non so spiegarmelo.

Ma come può essere possibile???


ps
magicamente il regolatore 7805 è tornato a scaldare poco insomma il giusto, la temperatura segnata dal LM35 è tornata reale e non artica
« Last Edit: November 11, 2013, 06:11:37 am by tronicman » Logged

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5898
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

che pin usi per accendere e spegnere la retroilluminazione ? hai messo una resistenza di limitazione ?
nella mia libreria puoi usare qualsiasi pin, ma lo devi dichiarare insieme a righe e colonne, non so nella tua, cmq nel codice postato non c'e' dichiarato il pin, quindi non serve il comando backlight, il led di retroilluminazione lo tieni acceso fisso ?
« Last Edit: November 11, 2013, 11:04:53 am by Testato » Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Pages: 1 [2] 3   Go Up
Jump to: