INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Switch/Case mit chars
24.07.2016, 21:00
Beitrag #9
RE: Switch/Case mit chars
Klar, gerne! Warum nicht, wenn es anderen hilft Smile
Code:
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include <ArduinoJson.h>


// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Select which 'port' M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *fan = AFMS.getMotor(1);
Adafruit_StepperMotor *gas = AFMS.getStepper(513, 2);

int steps;
int target;
int actual;
uint8_t dir;

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  while (!Serial) {
  }

  AFMS.begin();  // create with the default frequency 1.6KHz

  gas->setSpeed(80);
}

void loop() {
  StaticJsonBuffer<200> jsonBuffer;
  
  while (Serial.available()) {
    String json = Serial.readString();
    
    JsonObject& root = jsonBuffer.parseObject(json);

    String motor = root["motor"];
    int motorValue = root["motorValue"];
    
    if  (motor == "fan") {
      fan->setSpeed(motorValue);
      fan->run(FORWARD);
      Serial.println(motorValue);
    }
    else if (motor == "gas") {
      target = pa2steps(motorValue, actual);
      steps = target - actual;
      Serial.println(steps);
      if (target > actual) dir = FORWARD;
      else dir = BACKWARD;
      gas->step(abs(steps), dir, SINGLE);
      gas->release();
      actual = target;
    }
    else {
      Serial.println("Unknown motor: " + motor);
    }
  }
}

int pa2steps (int target, int actual) {
  switch (target) {
    case 0:
    target = 0;
    break;
    
    case 500:
    target = 257;
    break;
    
    case 1000:
    target = 513;
    break;
    
    case 1500:
    target = 770;
    break;
    case 2000:
    target = 1026;
    break;
    
    case 2500:
    target = 1283;
    break;
    
    case 3000:
    target = 1539;
    break;
    
    case 3500:
    target = 1796;
    break;
    
    case 4000:
    target = 2052;
    break;
    
    default:
    target = actual;
    break;
  }
  return target;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Unterschiedliche Programme durch Switch/ Case SpeedShifter 26 605 04.10.2016 15:29
Letzter Beitrag: SpeedShifter
  Problem Wiederholung eines Case im Switch via Bluetooth Ecki1212 6 901 16.09.2015 23:06
Letzter Beitrag: Ecki1212
  Switch Case, LEDs bleiben an, Bedingung aber falsch luto92 4 1.443 16.11.2014 16:52
Letzter Beitrag: luto92
  Enum mit Switch - Probleme alpenpower 17 5.389 08.08.2014 18:56
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste