- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 64

Thema: Raspi C/C++, Raspi als I2C-Master: byte arrays zu Arduino slave hin + her schicken?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    HaWe
    Gast
    ich habe diesen Code probiert von http://blog.retep.org/2014/02/15/con...-pi-using-i2c/

    Code:
    #include <string.h>
    #include <unistd.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <linux/i2c-dev.h>
    #include <sys/ioctl.h>
    #include <fcntl.h>
    #include <unistd.h>
     
    // The PiWeather board I2C address
    #define ADDRESS 0x04
     
    // The I2C bus: This is for V2 pi's. For V1 Model B you need i2c-0
    static const char *devName = "/dev/i2c-1";
     
    int main(int argc, char** argv) {
     
      if (argc == 1) {
        printf("Supply one or more commands to send to the Arduino\n");
        exit(1);
      }
     
      printf("I2C: Connecting\n");
      int file;
     
      if ((file = open(devName, O_RDWR)) < 0) {
        fprintf(stderr, "I2C: Failed to access %d\n", devName);
        //fprintf( stderr, “I2C: Failed to access %s : %s\nâ€, devName, strerror (errno) );
        exit(1);
      }
     
      printf("I2C: acquiring buss to 0x%x\n", ADDRESS);
     
      if (ioctl(file, I2C_SLAVE, ADDRESS) < 0) {
        fprintf(stderr, "I2C: Failed to acquire bus access/talk to slave 0x%x\n", ADDRESS);
        exit(1);
      }
     
      int arg;
     
      for (arg = 1; arg < argc; arg++) {
        int val;
        unsigned char cmd[16];
     
        if (0 == sscanf(argv[arg], "%d", &val)) {
          fprintf(stderr, "Invalid parameter %d \"%s\"\n", arg, argv[arg]);
          exit(1);
        }
     
        printf("Sending %d\n", val);
     
        cmd[0] = val;
        if (write(file, cmd, 1) == 1) {
     
          // As we are not talking to direct hardware but a microcontroller we
          // need to wait a short while so that it can respond.
          //
          // 1ms seems to be enough but it depends on what workload it has
          usleep(10000);
     
          char buf[1];
          if (read(file, buf, 1) == 1) {
            int temp = (int) buf[0]; 
            printf("Received %d\n", temp);
          }
        }
     
        // Now wait else you could crash the arduino by sending requests too fast
        usleep(10000);
      }
     
      close(file);
      return (EXIT_SUCCESS);
    }
    und den Teil
    Code:
    char buf[1];
          if (read(file, buf, 1) == 1) {
            int temp = (int) buf[0]; 
            printf("Received %d\n", temp);
          }
    geändert in

    Code:
    char buf[30];
          if (read(file, buf, 30) == 1) {
            for (int  j = 0; j<30; ++j) {
               temp=buf[j]; 
               printf("Received %d\n", temp);
            }
          }
    aber er liest hier nur 30x das erste byte in array[0] und nicht den Rest des arrays.

    Ich denke auch, es macht keinen Sinn an diesem beispiel rumzudoktern, man braucht völlig neu aufgesetzten Raspi- Code zum abwechselnen wiederholten array- schreiben und lesen.

    Für alle Tipps bin ich natürlich offen, aber der, der sie vorschlägt, müsste schon in der Lage sein, die Verbindung ebenfalls herzustellen und bei sich selber vor Ort zu testen (d.h. er müsste auch einen Raspi und einen Arduino besitzen und sie entsprechend verbinden und seinen eigenen - bzw. unseren gemeinsamen, auf einander abgestimmten - Code testen können).
    Geändert von HaWe (05.02.2016 um 15:57 Uhr) Grund: syntax typo berichtigt

Ähnliche Themen

  1. Raspi mit Arduino per USB verbinden
    Von HaWe im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 11.11.2015, 16:26
  2. [ERLEDIGT] Raspi Club?
    Von pofoklempner im Forum Raspberry Pi
    Antworten: 16
    Letzter Beitrag: 09.07.2015, 06:20
  3. Antworten: 1
    Letzter Beitrag: 12.06.2015, 14:50
  4. Antworten: 5
    Letzter Beitrag: 24.08.2014, 16:36
  5. Schnelle(!) Objekterkennung mit Raspi+USB-Cam
    Von phantom111 im Forum Sensoren / Sensorik
    Antworten: 19
    Letzter Beitrag: 20.02.2014, 12:18

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen