Show Posts
Pages: [1] 2
1  International / Generale / Re: Da videoproiezione statica a dinamica con sensori on: July 13, 2014, 01:25:03 pm
Secondo me con qualche sensore che rileva la presenza della mano (come per esempio un sensore capacitivo o Touch sotto il tavolo) puoi mandare un dato via seriale/USB al PC che fa partire il video che viene proiettato sul tavolo.

Ciao Uwe

Avevo pensato ad un sensore di vibrazione, ma non riesco a capire come mantenere un'immagine fissa sul tavolo e farla animare quando il pc riceve l'impulso da arduino.

Normalmente quando fai partire un video il programma trasmette per circa 1sec uno sfondo nero e poi riproduce....anche impostando manualmente il player sul primo frame così da non far trasmettere il frame nero del caricamento del video, come faccio, finito il video, a reimpostare la riproduzione al primo frame?
2  International / Generale / Da videoproiezione statica a dinamica con sensori on: July 13, 2014, 02:46:19 am
Ciao, vorrei realizzare una videoproiezione statica che si anima nel momento in cui alcuni sensori rilevano del movimento.
Qualcosa del genere: https://www.youtube.com/watch?v=9sB_CXsimp4

Come posso fare secondo voi?
Grazie
3  International / Hardware / Rilevare presenza umana anche in assenza di movimento on: September 25, 2013, 05:28:07 am
Salve, mi servirebbe rilevare la presenza umana in una stanza, non solo quando la persona si muove ma anche quando sta ferma.

Conoscete un modo per effettuare questa rilevazione?

Grazie per il vostro prezioso aiuto!
4  International / Megatopic / Re: [HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth on: August 31, 2013, 09:16:39 am
E' possibile riprogrammare i moduli HC-07 per aggiungere altri comandi tipo: INQ - BIND - PAIR....???

Grazie
5  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: December 28, 2012, 12:48:26 pm
il problema è che al momento sto provando con un solo slave collegato al bus, eppure ci sono già problemi...
come si può notare del debug, ogni tanto il master, invece di riceve 2128 riceve ÿ.

altra cosa che non mi spiego:
se scrivo " if (Serial1.available() > 0) " non funziona, se invece scrivo " if (Serial1.available()) " funziona...
6  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: December 27, 2012, 01:52:51 pm
ora provo col codice che hai modificato.
il Serial1.end() e Serial1.begin(9600) l'ho utilizzati per azzerare il buffer dato che col debug oltre ai dati giusti noto anche altri simboli...inserendo l'end e il nuovo begin invece non noto altro che i dati giusti...(questo perchè ho letto che il flush, con l'IDE 1.0.0, non pulisce il buffer ma attende che tutti i dati siano stati inviati...o sbaglio?)

dici di eliminare il delay(250) che sta all'inizio del void interroga_slave?

EDIT:
Ho inserito il codice che mi hai dato ma continuano ad esserci problemi.
Ho notato che lo slave invia il dato, giustamente, quando riceve e controlla quello che gli ha inviato il master e noto che quando lo slave finisce di inviare, il master continua e porta al termine l'invio verso gli altri slave...può essere che il problema sia dovuto a collisioni? forse dovrei includere in ogni switchcase oltre all'invio dei dati anche la ricezione invece di inviare tutto e poi leggere? non so se mi sono spiegato bene...

questo è ciò che il debug mi stampa:
Code:
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2ÿÿÿ
ÿÿ
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
21ÿÿ
øÿÿÿ
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
2128
7  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: December 27, 2012, 10:22:12 am
Tempo permettendo ho potuto continuare lo sviluppo della comunicazione rs485 tra arduino.
Sto riscontrando alcuni problemi.
Il Master "ARDUINO MEGA 2560" collegato sulla Seriale 1 hardware al chip adm485 RX1-19 TX1-18 e pinControl-9, il master invia alcuni valori agli slave che controllano i dati ricevuti e se corretti inviano altri dati al master che verifica questi dati e se corretti, per il momento, attiva un led posto sul pin 12.

Gli slave "ARDUINO UNO SMD" collegati sulla Seriale hardware al chip adm485 RX-0 TX-1 e pinControl-4.

Il problema è che vedo gli slave che ricevono e inviano i dati, ma il master non sempre riceve e quindi non sempre attiva il led

CODICE MASTER
Code:
#if ARDUINO >= 100
  #include <Arduino.h>
  #include <SoftwareSerial.h>

  //SoftwareSerial cameraconnection = SoftwareSerial(8, 9);
  SoftwareSerial rs485(10, 11); // receive & transmit pins
#else
  #include <WConstants.h>
  #include <NewSoftSerial.h>

  //NewSoftSerial cameraconnection = NewSoftSerial(8, 9);
  NewSoftSerial rs485(10, 11); // receive pin & transmit pins
#endif

int  pinCONTROL = 9;
int  pinMLED = 13;
int  pinLED = 12;
int  myaddress = 0;
int  slave = 1;
char msg1[] = {'2', '1', '3', '9'};
char msg2[] = {'2', '2', '3', '9'};
char msg3[] = {'2', '3', '3', '9'};
char msg4[] = {'2', '4', '3', '9'};
char msg5[] = {'2', '5', '3', '9'};
char msg6[] = {'2', '6', '3', '9'};
char msg7[] = {'2', '7', '3', '9'};
char msg8[] = {'2', '8', '3', '9'};

byte  byte_receive;
char  data[4];
byte  state=0;
byte  INDEX=0;
byte  pronto=0;

unsigned long previousMillis = 0; // last time update
long interval = 10000;           // interval at which to blink (milliseconds)


void setup() {

   pinMode(pinLED, OUTPUT);
   pinMode(pinMLED, OUTPUT);
   pinMode(pinCONTROL, OUTPUT);
   digitalWrite(pinCONTROL, LOW);
   Serial.begin(9600);
   Serial1.begin(9600);

}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis > interval) {
     previousMillis = currentMillis;
    
      slave = 1;
      for (slave = 1; slave <= 8; slave++)
      {
          interroga_slave(slave, INDEX);
      }
      
      if (slave > 8)
        slave = 1;
  }  
}

void interroga_slave(int num_slave, int INDEX)
{
   digitalWrite(pinMLED, LOW);
   digitalWrite(pinLED, LOW);
  
   digitalWrite(pinCONTROL, HIGH);
  
   delay(250); // Still some more waiting
   if ( num_slave == 1 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg1[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 2 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg2[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 3 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg3[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 4 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg4[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 5 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg5[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 6 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg6[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 7 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg7[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
   if ( num_slave == 8 ) {
     digitalWrite(pinMLED, HIGH);
     for (int i = 0; i<=4; i++) {
       Serial1.print(msg8[i]);
     }
     digitalWrite(pinMLED, LOW);
   }
  
   Serial1.flush();
   digitalWrite(pinCONTROL, LOW);
   Serial1.end();
   delay(10);
   Serial1.begin(9600);
  
   delay(100);
  
   if ( Serial1.available() ) {
    // Serial.println("A");
    
        for (int INDEX=0; INDEX<4; INDEX++) {
          data[INDEX] = Serial1.read();
          
      }
      
      Serial.print(data[0]);
      Serial.print(data[1]);
      Serial.print(data[2]);
      Serial.println(data[3]);
      
      if (data[1] == '1') {
        digitalWrite(pinMLED, HIGH);
        delay(200);
      }
      if (data[2] == '2') {
        digitalWrite(pinLED, HIGH);
        delay(200);
      }
      
    }
}

CODICE SLAVE
Code:
#if ARDUINO >= 100
  #include <Arduino.h>
  //#include <SoftwareSerial.h>

  //SoftwareSerial cameraconnection = SoftwareSerial(8, 9);
  //SoftwareSerial rs485(2, 3); // receive & transmit pins
#else
  #include <WConstants.h>
  //#include <NewSoftSerial.h>

  //NewSoftSerial cameraconnection = NewSoftSerial(8, 9);
  //NewSoftSerial rs485(2, 3); // receive pin & transmit pins
#endif

#define  pinCONTROL    4
#define  pinMLED       13
#define  pinLED        12
#define  myaddress     1

char msg[] = {'2', '1', '2', '8'};
  
byte  byte_receive[4];
char  data[4];
byte  state=0;
byte  INDEX=0;
byte  pronto=0;

void setup() {

   pinMode(pinLED,OUTPUT);
   pinMode(pinMLED,OUTPUT);
   pinMode(pinCONTROL,OUTPUT);
   digitalWrite(pinCONTROL,LOW);
   Serial.begin(9600);
   //rs485.begin(9600);

}

void loop()
{
  delay(100);
  digitalWrite(pinMLED,LOW);
  digitalWrite(pinLED,LOW);
  digitalWrite(pinCONTROL,LOW);
  delay(150);
  
  if (Serial.available()) {
        for (int INDEX=0; INDEX<4; INDEX++) {
          data[INDEX] = Serial.read();
        }
  }
  
  //Serial.println(data);
  if (data[0] == '2')        //Se il primo dato ricevuto è 2 allora siamo sicuri che il master ci sta interrogando e abilitiamo l'invio
       pronto=1;
  
  if (pronto == 1 && data[1] == '1') {
       digitalWrite(pinCONTROL,HIGH);
       digitalWrite(pinMLED,HIGH);
       delay(250);
      
       for (int i = 0; i<=4; i++) {
         Serial.print(msg[i]);
       }
      
       while (!(UCSR0A & (1 << TXC0)));   // Wait for the transmission to complete
       digitalWrite(pinCONTROL,LOW);
  
       if (data[1] == 1) {
           digitalWrite(pinMLED,HIGH);
           delay(200);
       }
       if (data[2] == 3) {
           digitalWrite(pinLED,HIGH);
           delay(200);
       }
       pronto = 0;
       data[0] = 0;
       data[1] = 0;
       data[2] = 0;
       data[3] = 0;
   }
}

byte hex2num(byte x){

  byte result;
  
  if (x>=48 && x<=57){
    result=x-48;  
  }else if (x>=65 && x<=70){
    switch(x){
      case 65:
        result=10;
        break;
      case 66:
        result=11;
        break;
      case 67:
        result=12;
        break;
      case 68:
        result=13;
        break;
      case 69:
        result=14;
        break;
      case 70:
        result=15;
        break;    
    }  
  }
  return result;  
}
8  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: November 11, 2012, 12:54:49 pm
ho collegato le schedine in mio possesso ai due arduino e ho caricato questi codici:

Code:
/* YourDuino RS485 Master Node S Example
 terry@yourduino.com */

/*-----( Declare Variables )-----*/
int EN = 4;

void setup() /****** SETUP: RUNS ONCE ******/
{
  pinMode(EN, OUTPUT );
  Serial.begin (9600);
}//--(end setup )---

void loop()    /****** LOOP: RUNS CONSTANTLY ******/
{
  // Send Data
  digitalWrite(EN, HIGH ); // enable send
  Serial.print ( 'A' );
  delay(1000);
  Serial.print ( 'B' );
  delay (1000);
}//--(end main loop )---

Code:
/* YourDuino RS485 Slave Node A Example
 terry@yourduino.com */

/*-----( Declare Variables )-----*/
int ledPin=12;
int EN = 4;
int Val;

void setup()/****** SETUP: RUNS ONCE ******/
{
  pinMode(ledPin, OUTPUT );
  pinMode(EN, OUTPUT );
  Serial.begin (9600);
}//--(end setup )---

void loop()  /****** LOOP: RUNS CONSTANTLY ******/
{
  // receive Data
  digitalWrite (EN, LOW ); // enable receive
  Val = Serial.read ();
  if (-1 != Val)
  {
    if ( 'A' == Val)
    {
      digitalWrite (ledPin, HIGH );
      delay (500);
      digitalWrite (ledPin, LOW );
      delay (500);
    }
  }

}//--(end main loop )---

Ho seguito questa pagina: https://arduino-info.wikispaces.com/RS485-Brick

però ho dovuto cambiare la velocità perchè a 19200 non andava.
Eppure nell'esempio della mikroe porta come velocità proprio 19200...
Come mai a tale velocità non funziona secondo voi?

Per il resto posso utilizzare questo codice per la 485?
9  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: November 11, 2012, 05:56:56 am
Ho visto che ci sono varie librerie in giro per internet.

Io posseggo delle schede rs485 della mikroe con chip adm485 come QUESTA, vanno bene? quale libreria potrei usare compatibile con Arduino 1.0.1?
10  International / Software / Re: Rete arduino con Ds1307 e sensore temperatura on: November 11, 2012, 05:26:46 am
Mi serve una comunicazione tra master e slave che possa coprire minimo una 30ina di metri.
Il master dovrà interrogare tutti gli slave che installerò e farsi dare la temperatura rilevata, la temperatura impostata per il riscaldamento, orari inizio/fine, ecc...

Quale tipo di comunicazione mi consigliate?
11  International / Software / Rete arduino con Ds1307 e sensore temperatura on: November 10, 2012, 10:21:46 am
ciao, sto cercando di realizzare una rete di arduino formata da un MEGA (master) e molti UNO (slave).

Ad ogni slave c'è collegato un sensore di temperatura (sto provando sia con un ds1820 1-wire, sia con un ds1629 i2c) che deve leggere e, a richiesta del Master, passare la temperatura letta.

Al Master c'è collegato un DS1307 e un sensore di temperatura. Il Master ciclicamente interroga tutti gli slave per sapere la loro temperatura.

Ho buttato giù un po' di codice ma ho dei problemi con la comunicazione.

Utilizzando i ds1820 1-wire e la comunicazione master-slave su I2C, gli slave si bloccano.
Utilizzando i ds1629 I2C e la comunicazione master-slave su I2C, il tutto funziona ma noto che il master nello stampare sul display da 3,2'' data e ora del ds1307 riceve molte interferenze, penso dovute al fatto che anche lo slave usa il bus per leggere il ds1629, e stampa anche altri valori.

Ad ogni slave c'è installato questo display; https://www.sparkfun.com/products/9363
Al master invece c'è installato questo: http://www.ebay.it/itm/SainSmart-3-2-TFT-Touch-Screen-LCD-SD-reader-Mega-Expansion-Board-4-Arduino-/221074949792?pt=Elektromechanische_Bauelemente&hash=item33791806a0#ht_4318wt_1156

Allego il codice.

tutte le righe commentate all'interno del file SLAVE sono relative al sensore ds1820 o alla comunicazione tra master e slave.

Grazie per l'aiuto che potrete darmi.
12  International / Generale / Re: Nokia6100 philips e arduino Uno on: November 30, 2011, 11:49:42 am
Ho importato l'immagine bmp in GIMP e l'ho salvata in "codice sorgente C", me l'ha data lui...

Questo è quello che mi ha salvato:

Code:
/* GIMP RGB C-Source image dump (fiammella.c) */

static const struct {
  unsigned int width;
  unsigned int height;
  unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
  unsigned char pixel_data[10 * 24 * 3 + 1];
} gimp_image = {
  10, 24, 3,
  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\320\215"
  "\377\354\262\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\330\230\377\225?\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377\377\377\330\230\377f\0\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\377\312\206\377f\0\377q"
  "\17\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377\377\377\377\266k\377f\0\377f\0\377\246V\377\377\377\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\2154\377f\0\377w\26\377"
  "i\4\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377i\4\377f\0\377\222;\377w\26\377\261d\377\377\377\377\377\377\377\377"
  "\377\377\377\377\377\246V\377f\0\377f\0\377\250b\377\341\302\377\2120\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377f\0\377f\0\377f\0\377\326"
  "\264\377\375\370\377y\32\377\377\377\377\377\377\377\377\377\377y\32\377"
  "f\0\377f\0\377f\0\377\364\351\377\377\376\377t\22\377\377\377\377\377\377"
  "\377\2208\377f\0\377f\0\377f\0\377f\0\377\372\361\377\377\377\377|\36\377"
  "\377\377\377\274s\377f\0\377f\0\377f\0\377f\0\377\251Y\377\377\377\377\370"
  "\357\377\230B\377\377\377\377n\13\377f\0\377f\0\377f\0\377\2120\377\377\377"
  "\377\377\377\377\230B\377\277v\377\377\377\377f\0\377f\0\377f\0\377x\31\377"
  "\377\377\377\377\377\377\377\377\377n\13\377\377\377\377\246V\377f\0\377"
  "f\0\377f\0\377\377\377\377\377\377\377\377\377\377\307\202\377\210-\377\377"
  "\377\377\210-\377f\0\377f\0\377k\7\377\377\377\377\377\377\377\377\377\377"
  "\205)\377\307\202\377\377\377\377w\26\377f\0\377f\0\377\2120\377\377\377"
  "\377\377\377\377\377\377\377w\26\377\377\377\377\377\377\377w\26\377f\0\377"
  "f\0\377\2208\377\377\377\377\377\377\377\236J\377\271o\377\377\377\377\377"
  "\377\377\2154\377f\0\377f\0\377\2120\377\377\377\377\377\377\377q\17\377"
  "\377\377\377\377\377\377\377\377\377\271o\377f\0\377f\0\377\177\"\377\377"
  "\377\377\243R\377\277v\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "y\32\377f\0\377k\7\377\377\377\377\210-\377\377\377\377\377\377\377\377\377"
  "\377\377\377\377\377\377\377\325\224\377f\0\377f\0\377\230B\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\271o\377f\0\377\243R\377\377\377\377\377\377\377\377\377\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\274s\377\377\377\377\377"
  "\377\377\377\377\377\377\377\377\377\377\377\377\377",
};

Ora come faccio?
13  International / Generale / Re: Nokia6100 philips e arduino Uno on: November 30, 2011, 02:56:11 am
Gli ho visti quasi tutti i link nei commenti di Sparkfun e la maggiorparte sono per chip Epson

Cmq appena torno a casa provo a convertire con Gimp...non sapevo di questa funzione.

14  International / Generale / Re: Nokia6100 philips e arduino Uno on: November 29, 2011, 12:04:10 pm
per convertire l'icona da bmp a rgb 12bit utilizzo "BMP CONVERT 2.0.0"

ho provato sia con 12bitA sia con 12bitB ma non è cambiato granché...

cosa potrei utilizzare? il codice da me in uso è giusto?
15  International / Generale / Re: Nokia6100 philips e arduino Uno on: November 29, 2011, 04:28:08 am
Si, c'è il logo Sparkfun, però non è colorato, ètutto rosso ed ha una routine fatta a posta per lui...se non sbaglio la trovi nel file allegato all'interno del file ColorShieldLCD.ccp e si chiama "printlogo"

Cmq sia la allego:
Code:
void LCDShield::printLogo(void)
{
        int x = 4, y = 25, logo_ix = 0, z;
        char logo;
        for (logo_ix = 0; logo_ix < 1120; logo_ix++)
        {
                logo = logo_spark[logo_ix];
                for (z = 0; z < 8; z++)
                {
                        if ((logo & 0x80) == 0x80) setPixel(RED, y, x);
                        x++;
                        if (x == 132)
                        {
                                x = 4;
                                y++;
                        }
                        logo <<= 1;
                }
        }
}
Pages: [1] 2