arduinoReadF
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## arduinoReadF

arduinoReadF — Lit des données depuis un port arduino avec le protocole Csound-Arduino.

## Description

Opcode du greffon serial.

Lit des données depuis un port arduino avec le protocole Csound-Arduino.

## Syntaxe

    kval arduinoReadF iPort, iStream1,
          iStream2, iStream3

## Exécution

iPort -- Numéro de port obtenu d'un opcode arduinoStart.

iStream1, iStream2, iStream3 -- Numéros des trois flots de données, compris entre 0 et 30. Chaque flot transporte 10 bit du résultat en virgule flottante sur 30 bit. La division est créée dans le dessin de l'Arduino inclus dans la fonction put_float.

kval -- valeur en virgule flottante lue.

| Note
La valeur transmise a une mantisse plus courte de deux bit que celle produite par l'Arduino ce qui introduit une petite erreur.

## Exemples

Voici un exemple de l'opcode arduinoReadF. Il utilise le fichier arduinoReadF.csd.

Exemple 59. Exemple de l'opcode arduinoReadF.

Voir les sections Audio en temps réel et Options de la ligne de commande pour plus d'information sur l'utilisation des options de la ligne de commande.

    Arduino-Joystick2Csound1g-fm1-port (version with smoothing)

    - Push Joystick button to turn on note
    - Use JoystickX to offset and control the modulation index of
      the foscil opcode from 0-40 via the scale opcode
    - Use JoystickY to offset and control the Frequency of the foscil
      opcode up/down two octaves via the scale opcode

    <CsoundSynthesizer>

    <CsInstruments>

    sr = 44100
    ksmps = 441
    nchnls = 2
    0dbfs = 1

    giport init 0

    // NOTE: change USB port "/dev/cu.usbmodem1414301" to correspond
    //       with USB port used by Arduino on your system
    giport arduinoStart  "//dev/ttyACM0", 9600    // for GNULinux

    instr 1

    kk  arduinoReadF  giport, 1, 2, 3
    printks "kk=%f\n", 0.5, kk
     endin

    </CsInstruments>

    <CsScore>

    f 1 0 16384 10 1

    i 1 0 1

    e

    </CsScore>

    </CsoundSynthesizer>

    <arduinoSketch>
    // Float Example

    // John ffitch & Richard Boulanger
    // December 7, 2020

    // BreadBoard & Arduino Setup

    void setup() {
                  // NOTE: Digital pins can be either inputs or outputs.

      Serial.begin(9600);
    }

    // put_val( ) - a function to send data values to the Csound
    //              "arduinoRead" opcode
    // The first argument of the put_val function "int senChan" sets
    // the software channel number that Csound reads
    // NOTE: "senChan" does "not" define the input pin that is used on
    // the Arduino for a specific sensor
    // The specific Arduino input pin used by any sensor is assigned
    // and set elsewhere in the Arduino sketch and mapped to a
    // user-defined put_val "senChan" channel

    void put_val(int senChan, int senVal)
            // Set the Csound receive channel "senChan", and read from
            // the sensor data stream "senVal"
    {       // The packing of the data is sssssvvv 0vvvvvvv where s is a
            // senChan bit, v a senVal bit and 0 is zero` bit
      int low = senVal&0x7f;
      int hi = ((senVal>>7)&0x0f) | ((senChan&0x0f)<<4);
      Serial.write(low); Serial.write(hi);
    }

    void put_float(int senChan1, int senChan2, int senChan3, float senVal)
    {
      typedef union {
        float f;
        long i;
      } JOINT;
      JOINT x;
      x.f = senVal;
      put_val(senChan1, (x.i>> 2)& 0x3ff);
      put_val(senChan2, (x.i>>12)& 0x3ff);
      put_val(senChan3, (x.i>>22)& 0x3ff);
    }

    void loop() {

       Serial.write(0xf8);   // Synchronization Byte - (essential!) marks beginning of new serial frame

      put_float(1,2,3,1.23456789);

      delay(10);

    }

    </arduinoSketch>

## Voir aussi

arduinoStart, arduinoStop, arduinoRead,

## Crédits

Auteur : John ffitch
Auteur : Richard Boulanger
2020

Nouveau dans la version 6.15

Précédent | Niveau supérieur | Suivant
arduinoRead | Sommaire | arduinoStart