Show Posts
Pages: [1] 2 3 ... 14
1  International / Hardware / Re: Problema iboard-ex Leonardo compatibile e Xbee on: June 22, 2013, 09:36:39 am
Vedo che la discussione si anima  smiley-grin , penso che il modulo Xbee lo lascio perdere, non mi metto a modificare la libreria solo per quello, passerò alla prova dello slot per NRF24L01, sperando non ci siano gli stessi problemi.
A me interessa questa scheda per usarla come concentratore dei sensori con Arduino e comunicazione con NRF24L01 , l'Ethernet con la Wiz , per interfacciarmi con internet.
Ho ancora un po' di roba da testare.
Grazie a tutti
2  International / Hardware / Re: Problema iboard-ex Leonardo compatibile e Xbee on: June 22, 2013, 07:51:55 am
Forse ho scoperto l'arcano, contrariamente a quanto scritto sul datasheet della scheda, il pin2 e il pin3 sul socket Xbee non sono collegati rispettivamente a TX e RX cioè PD2 e PD3 , ma a SCL (PD0) e SDA (PD1), quindi con Atmega32U4 credo sia impossibile da gestire, perché dovrei usare la libreria softwareserial che con Leonardo ha problemi a gestire i pin sopracitati.
Bella notizia   smiley-sad

ps
dubbio espresso da PaoloP   smiley-roll
3  International / Hardware / Re: Problema iboard-ex Leonardo compatibile e Xbee on: June 20, 2013, 01:44:43 am
Si Leo, il dialogo c'è, anche la Wiznet funziona.
E' solo la comunicazione con Xbee che ha problemi, come leggete da quanto ho relazionato.    smiley-cry
Infatti usando lo stesso sketch di Arduino Uno, con la Serial, le risposte le ho sul terminal di ritorno
4  International / Hardware / Re: Problema iboard-ex Leonardo compatibile e Xbee on: June 19, 2013, 12:08:51 pm
Grazie per le sollecite risposte, ma anche caricando lo sketch proposto non succede nulla.
Per spiegare meglio, la scheda da ricevente, manda indietro il codice del tasto ricevuto , con una stringa di preambolo.
La diversità rispetto alla Uno è che non si accende il led del RSSI sulla board di prova con solo il socket Xbee e una serial/usb, quindi da quanto ne deduco non aggancia , quindi non dialoga.
Sulla IBOARD, Xbee è correttamente alimentata, provato con tester, ma non essendoci nessun led di riferimento, non so purtroppo cosa in effetti combini.
Questo è il quanto   smiley-roll
5  International / Hardware / Re: Problema iboard-ex Leonardo compatibile e Xbee on: June 19, 2013, 08:48:45 am
Il pinout è come nello shield:
Xbee Communication Interface

Index of Interface Name of Interface       Index of Arduino            Pin of ATMEGA32U4
1    XBee_Reset                                    D12                             PD6
2    RX                                                D0                              PD2
3   TX                                                 D1                              PD3

6  International / Hardware / Problema iboard-ex Leonardo compatibile e Xbee on: June 19, 2013, 07:00:04 am
Stro usando questa board:
http://imall.iteadstudio.com/development-platform/arduino/arduino-compatible-mainboard/iboard-ex.html
è Arduino Leonardo compatibile, con Ethernet e Socket Xbee on board, ma ho dei problemi a fargli riconoscere una Xbee S1.
Con questo semplice sketch, usando un Arduino Uno con Shield Xbee e Xbee S1 da un lato e Xbee S1 via USB-Seriale dall'altro tutto funziona ho le risposte corrette:
Code:
int incomingByte = 0; // for incoming serial data
 
void setup() {
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  pinMode(12, OUTPUT);
 
  // blink twice at startup
  digitalWrite(12, LOW);
  delay(1000);
 
  digitalWrite(12, HIGH); // first blink
  delay(50);
  digitalWrite(12, LOW);
  delay(200);
  digitalWrite(12, HIGH); // second blink
  delay(50);
  digitalWrite(12, LOW);
}
 
void loop() {
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();
 
    if(incomingByte == '0'){
      digitalWrite(13, LOW);
    }else if(incomingByte == '1'){
      digitalWrite(13, HIGH);
    }   
    // say what you got:
    Serial.println(" ");
    Serial.print("Arduino received: ");
    Serial.println(incomingByte);
     digitalWrite(12, HIGH); // first blink
  delay(150);
  digitalWrite(12, LOW);

  }
}

con la board sopracitata non succede nulla, non si "accoppiano" e non ho nessuna risposta.
Visti on line alcune incongruenze con Leonardo e Xbee, ho modificato lo sketch come sotto:
Code:
int incomingByte = 0; // for incoming serial data
 
void setup() {
  Serial1.begin(9600); // opens serial port, sets data rate to 9600 bps
  while(Serial1)
 
  pinMode(12, OUTPUT);
 
  // reset low
  digitalWrite(12, LOW);
}
 
void loop() {
  // send data only when you receive data:
  if (Serial1.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial1.read();
 
    if(incomingByte == '0'){
      digitalWrite(13, LOW);
    }else if(incomingByte == '1'){
      digitalWrite(13, HIGH);
    }   
    // say what you got:
    Serial1.println(" ");
    Serial1.print("Arduino received: ");
    Serial1.println(incomingByte);
   }
}

ottenendo però lo stesso risultato, nessuna risposta.   smiley-cry
Non so a questo punto se il problema è Hardware o Software
 smiley-roll
7  International / Hardware / Re: Distanza con ultrasuoni on: June 18, 2013, 10:22:45 am
Qui hai un esempio che usa tutt'altro metodo, ma mi sembra efficace:
http://www.bricobidules.com/index.php?category/Arduino/Charduino
8  International / Software / Re: Ir problema sketch on: June 15, 2013, 10:08:22 am
Probabilmente è il delay, aumenta almeno a 100.
Io ho affrontato un progetto quasi simile:
http://forum.arduino.cc/index.php?topic=145104.0
dagli un'occhiata
9  International / Generale / Re: Robot evita ostacoli on: June 15, 2013, 09:53:46 am
Perché se leggi bene, non ho usato la libreria IRremote, ma uso del codice ad hoc per telecomandi tipologia Sony    smiley-roll-blue
10  International / Hardware / Re: Moduli Ethernet ENC28J60 on: June 15, 2013, 02:53:22 am
Negli esempi della libreria per l'ENC c'è il test ping:
https://github.com/jcw/ethercard
dagli un occhiata
11  International / Generale / Re: Robot evita ostacoli on: June 14, 2013, 02:22:12 pm
Anch'io ho avuto quel tipo di problema, usavo anche la libreria servo e ho risolto in parte così:
http://forum.arduino.cc/index.php?topic=167525.0
12  International / Hardware / Re: Progetto Robot Comandato a Distanza on: June 09, 2013, 01:51:11 pm
Per Raspi c'è questa, meglio di una webcam usb:
http://www.raspberrypi.org/archives/3890
13  International / Software / Re: Conflitto interrupt libreria Servo - IRremote on: June 09, 2013, 07:12:02 am
Ho risolto, non usando la libreria IRremote, ma usando del codice per soli telecomandi in modalità Sony, ho anche modificato la gestione della movimantazione dei motori,quindi pubblico lo sketch:
Code:
/*
 * Sony_IR_Shield_MioBot
 */
                                                                               
#include <Servo.h>                           // Include servo library
 
Servo servoLeft;                             // Declare left and right servos
Servo servoRight;
 
const int ServoLeftPin = 9;                 // I/O pin constants
const int ServoRightPin =10;
const int IrDetPin = 11;
const int BeeperPin = 4;


const byte Enter = 11;                       // Non-alpha remote button constants
const byte ChUp = 16;
const byte ChDn = 17;
const byte VolUp = 18;
const byte VolDn = 19;
const byte Power = 21;

 
int irPulse;                                 // Stores pulses from IR detector
int remoteCode;                              // Stores code from remote
int mode = 1;                                // Stores mode

void setup()                                 // Setup runs once then loop takes over
{
  tone(BeeperPin, 3000, 1000);               // Play tone for 1 second
  delay(1000);                               // Delay to finish tone
 
}

void loop()                                  // Auto-repeats after setup
{
  int remoteCode = GetIrCode();              // Get code from remote
 
  // Note, detaching servos is nice because they stay still regardless of
  // whether or not they are calibrated.  This prevents them from turning
  // gradually if they are out of calibration.
  if(remoteCode == -1)                       // If nothing, detach servos
  {
    if((servoLeft.attached()==true) && (servoRight.attached()==true))
    {
      servoLeft.detach();
      servoRight.detach();
    }
  }
  else                                       // Otherwise, remote code received,
  {                                          // so attach/re-attach them.
    if((servoLeft.attached()==false) && (servoRight.attached()==false))
    {
      servoLeft.attach(ServoLeftPin);
      servoRight.attach(ServoRightPin);
    }
  } 
  // Padding to ignore end of remote code before attempting to detect objects.
  // This sketch only collects first 7 of 12 remote bits.  So delay for the
  // rest of the remote message is required before attempting object detection.
  // Otherwise, the remote's signaling would interfere with the IR object detection.
  delay(10);
 
 // Decide what to do with the remote code.  Implement number pad control
  // and equivalent channel/volume control.
  switch(remoteCode)                         
  {
    case 1:                                  // 1 -> pivot left
       maneuver(0, 200, 20);               // Execute maneuver for at least 20 ms
      break;                                // If this case, then done, skip other cases.
     
    case 2:                                 // 2 button
    case ChUp:                              // or Channel up button
        maneuver(200, 200, 20);
      break;
     
    case 3:                                // 3 button
        maneuver(200, 0, 20);              // Pivot right for at least 20 ms
      break;
     
    case 4:                                // 4 button pressed
    case VolDn:                            // Or volume down button pressed
      maneuver(-200, 200, 20);             // Rotate left in place for at least 20 ms
      break;
     
    case 5:                                // 5 button pressed
      maneuver(0, 0, 20);                  // Stay still for at least 20 ms
      break;
     
    case 6:                                // 6 button pressed
    case VolUp:                            // or volume up button pressed
      maneuver(200, -200, 20);             // Rotate right in place at least 20 ms
      break;
     
    case 7:                                // 7 button pressed
      maneuver(0, -200, 20);               // Pivot backward-left for at least 20 ms
      break;
     
    case 8:                                // 8 button pressed
    case ChDn:                             // or channel down button pressed
      maneuver(-200, -200, 20);            // Back up for at least 20 ms
      break;
     
    case 9:                                // 9 button pressed
      maneuver(-200, -0, 20);              // Pivot backward-right for at least 20 ms
      break;
     
    // Whoa, somebody pressed power, to select a new mode.
    // Back to outer switch...case.  Take no action if timeout (-1) or any non mapped remote
    // code is received.
    default:                               
      servoLeft.detach();               
      servoRight.detach();
      break;
  }   
}                                          // Loop function auto-repeats at this point

/*
 * Check for and decode SONY TV remote messages coming from the IR TV detector in a TV set.
 * Returns: Code for button pressed on remote, or -1 if timeout (no code received).
 * Source: http://www.parallax.com/tabid/768/ProductID/149/Default.aspx
 * Modified for Arduino.
 */
int GetIrCode(){
  unsigned long irPulse = -1;                // Local variables   
  int irCode = 0;
  do{
    // Use pulseIn with 15 ms timeout if mode is roaming or following, or 50 ms timeout for control by TV remote.
    if((mode==3)||(mode==2)) irPulse = pulseIn(IrDetPin, LOW, 15000); else irPulse = pulseIn(IrDetPin, LOW, 50000);
    // If timeout, return -1.
    if(irPulse==0) return -1;
  }while((irPulse <= 2000) || (irPulse >= 2800));
  // While condition filters for valid pulses and filters fluorescent ballast interference
 
  // Capture first 7 of 12 bits from the remote.
  for(int i = 0; i <= 6; i++)
  {
    irPulse = pulseIn(IrDetPin, LOW, 2000);
    if((irPulse > 1000) && (irPulse < 1400)) bitSet(irCode, i);
  }

  // Convert alphanumeric codes to their corresponding button values. 
  if(irCode <= 9) irCode++;
  if(irCode == 10) irCode = 0;

  return irCode;
}

/*
 * Control BOE Shield-Bot servo direction, speed, set and forget version.
 * Parameters: speedLeft - left servo speed
 *             speedRight - right servo speed
 *             Backward  Linear  Stop  Linear   Forward
 *             -200      -100......0......100       200
 */
void maneuver(int speedLeft, int speedRight)
{
  // Call maneuver with just 1 ms blocking; servos will keep going indefinitely.
  maneuver(speedLeft, speedRight, 1);             
}

/*
 * Control BOE Shield-Bot servo direction, speed and maneuver duration.   
 * Parameters: speedLeft - left servo speed
 *             speedRight - right servo speed
 *             Backward  Linear  Stop  Linear   Forward
 *             -200      -100......0......100       200
 *             msTime - time to block code execution before another maneuver
 * Source:     http://learn.parallax.com/ManeuverFunction
 */
void maneuver(int speedLeft, int speedRight, int msTime)
{
  servoLeft.writeMicroseconds(1500 + speedLeft);   // Set Left servo speed
  servoRight.writeMicroseconds(1500 - speedRight); // Set right servo speed
  if(msTime==-1)                                   // if msTime = -1
  {                                 
    servoLeft.detach();                            // Stop servo signals
    servoRight.detach();   
  }
  delay(msTime);                                   // Delay for msTime
}

 

14  International / Software / Re: RTOS per Arduino Due e Uno on: June 04, 2013, 06:10:10 am
 smiley-roll-blue
fatto
15  International / Software / RTOS per Arduino Due e Uno on: June 04, 2013, 05:51:39 am
Voglio segnalare questo interessante link sul ChibiOs, un RTOS per ARM, non è altro che una libreria che implementa un real time operating system per sfruttare al meglio Arduino Due.
Funziona su IDE 1.5.x , dicono anche su 1.xx , ma non mi sembra il caso.
http://jeelabs.org/2013/05/25/chibios-for-the-arduino-ide-2/
Non l'ho ancora provata
Pages: [1] 2 3 ... 14