Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int numberOfPotis = 2;
- int numberOfButtons = 5;
- int potiValues[2] = {0, 0};
- int highLowValues[2][2] = {{1023, 0}, {1023, 0}};
- void setup() {
- Serial.begin(1000000);
- for (int i = 0; i < numberOfPotis; i++) {
- analogWrite(i + 2, 255);
- setPhysicalFaderValueToFull (i);
- highLowValues[i][1] = analogRead(i);
- setPhysicalFaderValueToNull (i);
- highLowValues[i][0] = analogRead(i);
- }
- Serial.println("S;E");
- }
- void loop() {
- if (Serial.available() > 0 && char(Serial.read()) == 'S') {
- readMsg();
- }
- int newValue;
- for (int i = 0; i < numberOfPotis; i++)
- {
- newValue = readPoti(i);
- if (newValue != potiValues[i]) {
- potiValues[i] = newValue;
- String line;
- line = "S;0;1;" + String(1) + ";" + String(i) + ";" + String(potiValues[i]) + ";" + String(newValue) + ";E"; //System: S;commandType(1=getValue);valueType;sensorID;value;debugInfo;E
- Serial.println(line);
- }
- }
- }
- void setPhysicalFaderValueToNull (int faderID) {
- int upPin = 22 + (2 * faderID);
- int downPin = upPin + 1;
- digitalWrite(downPin, HIGH);
- digitalWrite(upPin, LOW);
- delay(500);
- digitalWrite(downPin, LOW);
- }
- void setPhysicalFaderValueToFull (int faderID) {
- int upPin = 22 + (2 * faderID);
- int downPin = upPin + 1;
- digitalWrite(upPin, HIGH);
- digitalWrite(downPin, LOW);
- delay(500);
- digitalWrite(upPin, LOW);
- }
- void setMotorPoti(int faderID, int value) {
- int upPin = 22 + (faderID * 2);
- int downPin = upPin + 1;
- int speed1 = 140;
- int speed2 = 110;
- int range = 5;
- while (readPoti(faderID) != value) {
- analogWrite(faderID + 2, speed1);
- while (getPositiveInt(value - readPoti(faderID))>range) {
- int potiValue = readPoti(faderID);
- if (potiValue < value) {
- digitalWrite(upPin, HIGH);
- digitalWrite(downPin, LOW);
- }
- if (potiValue > value) {
- digitalWrite(upPin, LOW);
- digitalWrite(downPin, HIGH);
- }
- Serial.println("High");
- }
- analogWrite(faderID + 2, 255);
- while (readPoti(faderID) != value) {
- int potiValue = readPoti(faderID);
- analogWrite(faderID + 2, map(getPositiveInt(value - potiValue), 0, 100, speed2, 255) * 1);
- if (potiValue < value) {
- digitalWrite(upPin, HIGH);
- digitalWrite(downPin, LOW);
- }
- if (potiValue > value) {
- digitalWrite(upPin, LOW);
- digitalWrite(downPin, HIGH);
- }
- Serial.print("LOW: ");
- Serial.println(potiValue);
- }
- digitalWrite(upPin, LOW);
- digitalWrite(downPin, LOW);
- if (readPoti(faderID) != value) delay(100);
- }
- potiValues[faderID] = value;
- }
- void readMsg() {
- boolean msgComplete = false;
- int msgValues[2] = {0, 0};
- int activeSlot = -1;
- while (Serial.available() > 0) {
- char nextChar = char(Serial.read());
- switch (nextChar) {
- case 'E':
- msgComplete = true;
- break;
- case ';':
- activeSlot++;
- break;
- default:
- msgValues[activeSlot] = (msgValues[activeSlot] * 10) + (nextChar - '0');
- break;
- }
- if (nextChar == 'E') {
- break;
- }
- }
- if (msgValues[0] < numberOfPotis && msgValues[1] <= 100) {
- // while (readPoti(msgValues[0]) != msgValues[1]) {
- setMotorPoti(msgValues[0], msgValues[1]);
- // delay(10);
- // }
- }
- }
- int readPoti(int pin) {
- int iterations = 30;
- int gesammt = 0;
- for (int i = 0; i < iterations; i++) {
- gesammt += analogRead(pin);
- }
- return map(gesammt / iterations, highLowValues[pin][1], highLowValues[pin][0] - 1, 100, 0);
- }
- int getPositiveInt (int i) {
- if (i < 0) i = i * -1;
- return i;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement