//Int Zahlen empfangen auf Arduino //funktioniert und LED Pin schaltet auch //getestet mit AI2 Arduino101_BLE_003 //15.11.2016 #include #define EN_PIN 2 //enable #define DIR_PIN 4 //direction #define STEP_PIN 3 //step #include "CurieTimerOne.h" BLEPeripheral blePeripheral; BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); BLEUnsignedIntCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite); BLEFloatCharacteristic floatZahl("19B10002-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite); const int ledPin = 13; float temp=0; bool select = 0; String tempstring; void setup() { //-------BLE blePeripheral.setLocalName("LED"); blePeripheral.setAdvertisedServiceUuid(ledService.uuid()); blePeripheral.addAttribute(ledService); blePeripheral.addAttribute(switchCharacteristic); blePeripheral.addAttribute(floatZahl); switchCharacteristic.setValue(0); floatZahl.setValue(0); blePeripheral.begin(); //-------Motortreiber Pins pinMode(EN_PIN, OUTPUT); digitalWrite(EN_PIN, HIGH); //deactivate driver (LOW active) pinMode(DIR_PIN, OUTPUT); digitalWrite(DIR_PIN, LOW); //LOW or HIGH pinMode(STEP_PIN, OUTPUT); digitalWrite(STEP_PIN, LOW); digitalWrite(EN_PIN, LOW); //activate driver //-------SERIELL Serial.begin(9600); Serial.print("BLE Peripheral"); } void loop() { BLECentral central = blePeripheral.central(); if (central) { Serial.print("Connected to central: "); Serial.println(central.address()); while (central.connected()) { //if (switchCharacteristic.written()){;} if (floatZahl.written()) { if(floatZahl.value()==999){Serial.print("SilentStepStick");Serial.println();select=0;} if(floatZahl.value()==998){Serial.print("A4988");Serial.println();select=1;} if(floatZahl.value()<=3&&select==0){TMC2100(floatZahl.value());} if(floatZahl.value()<=3&&select==1){A4988(floatZahl.value());} if(floatZahl.value()==0){CurieTimerOne.pwmStop();} } } } } void A4988( float n ) { Serial.print("neue Drehzahl A4988: "); Serial.print(n); Serial.print(" U/s"); Serial.print('\n'); n = 5000/n; CurieTimerOne.pwmStart(3, 25.0, n); } void TMC2100( float n ) { Serial.print("neue Drehzahl TMC2100: "); Serial.print(n); Serial.print(" U/s"); Serial.print('\n'); n = 312.5/n; CurieTimerOne.pwmStart(3, 25.0, n); }