Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // #include <LiquidCrystal.h>
- // LiquidCrystal lcd(12,11,5,4,3,2);
- int i;
- int iAnzBytes = 0;
- int index = 0;
- int tempMask = 0;
- byte bMaskmB = 0b00111111;
- byte bMaskhB = 0b00001111;
- byte bLowMask =0b11000000;
- byte bData[255];
- char StrStop[12] = {'+','+','+','\r','O','D','C','1',0x21,0x20,0x00,0x00};
- char StrStart[12] = {'+','+','+','\r','O','D','C','1',0x22,0x20,0x00,0x00};
- void setup() {
- // put your setup code here, to run once:
- // lcd.begin(16,2);
- Serial1.begin(19200);
- Serial.begin(19200);
- Serial.println("Stop data output");
- for (i = 0; i<12; i++){
- Serial1.print(StrStop[i]);
- delay(100);
- iAnzBytes =Serial1.available();
- Serial1.readBytes(bData,iAnzBytes);
- }
- // Serial.println(StrStop);
- // sort the array looking for the lowest value
- /*
- * for ( i = 1; i < 5; i++) {
- if (temp[i] < value) {
- value = temp[i];
- index = i;
- }
- }
- //*/
- }
- void loop() {
- // put your main code here, to run repeatedly:
- Serial.println("!! New measurement !!");
- Serial.println("Start data output");
- for (i = 0; i<12; i++){
- Serial1.print(StrStart[i]);
- }
- // Serial.println(StrStart);
- delay(300);
- iAnzBytes =Serial1.available();
- /*
- Serial.print("gelesene Bytes: ");
- Serial.print(iAnzBytes);
- Serial.print("\n");
- //*/
- Serial1.readBytes(bData,iAnzBytes);
- delay(100);
- iAnzBytes =Serial1.available();
- /*
- Serial.print("gelesene Bytes: ");
- Serial.print(iAnzBytes);
- Serial.print("\n");
- //*/
- Serial1.readBytes(bData,iAnzBytes);
- Serial.println("Stop data output");
- for (i = 0; i<12; i++){
- Serial1.print(StrStop[i]);
- }
- // Serial.println(StrStop);
- // iAnzBytes =Serial.available();
- /*
- Serial.print("gelesene Bytes: ");
- Serial.print(iAnzBytes);
- Serial.print("\n");
- //*/
- if (iAnzBytes > 5){
- // Serial.readBytes(bData,iAnzBytes);
- //*
- Serial.print("Read bytes: ");
- Serial.println(iAnzBytes);
- //*/
- // Serial.print("\n");
- for (i = 1; i < iAnzBytes; i++) {
- //*
- Serial.print("Current byte: ");
- Serial.print(bData[i]);
- Serial.print("\n");
- //*/
- tempMask = bData[i] & bLowMask;
- /*
- Serial.print("tempMask: ");
- Serial.print(tempMask);
- Serial.print("; bLowMask: ");
- Serial.print(bLowMask);
- Serial.print("\n");
- //*/
- if((tempMask) == 0) break;
- }
- index = i;
- //*
- Serial.print("index: ");
- Serial.println(index);
- Serial.print("; LowData: ");
- Serial.println(bData[index]);
- // Serial.print("\n");
- //*/
- long lB = bData[index];
- long mB = bData[index+1];
- long hB = bData[index+2];
- //*
- Serial.print("Values[HEX]: lB; mB; hB: ");
- // Serial.print("; ");
- Serial.print(lB, HEX); Serial.print("; ");
- Serial.print(mB, HEX); Serial.print("; ");
- Serial.println(hB, HEX); Serial.print("\n");
- //*/
- Serial.print("Values[BIN]: lB; mB; hB: ");
- // Serial.print("; ");
- Serial.print(lB, BIN); Serial.print("; ");
- Serial.print(mB, BIN); Serial.print("; ");
- Serial.println(hB, BIN); Serial.print("\n");
- Serial.print("Masked values): ");
- //Serial.print("; ");
- Serial.print(lB, BIN);Serial.print("; ");
- mB = mB & bMaskmB; // the upper 2 bits must be unmasked(they have to become 0)
- Serial.print(mB, BIN); Serial.print("; ");
- mB = mB * 64; // 64 = 2^6
- hB = hB & bMaskhB; // the upper 4 bits must be unmasked(they have to become 0)
- Serial.println(hB, BIN); Serial.print("; ");
- hB = hB * 4096; // 4096 = 2^12
- // because in "lB" the upper 2 bits are always 0 anyway, you do not have to mask "lB".
- long total = lB+mB+hB;
- Serial.print("total(DEC): ");
- Serial.println(total, DEC);
- float mm = total * 40.824 / 65519 - 0.4204872;
- float inch = total * 1.60724 / 65519 - 0.016554614;
- //*
- Serial.print("calculated value[mm]: ");
- Serial.print(mm-6.594220, 6); //subtracted thickness of plate from mm
- Serial.println(" mm");
- Serial.print("calculated value[inch]: ");
- Serial.print(inch-0.259639, 6); //subtracted thickness of plate from inch
- Serial.println(" inch");
- Serial.println(); Serial.println();
- /*/
- lcd.clear();
- if ((mm < 40) && (mm > 0,0001)) {
- lcd.setCursor(0,0);
- lcd.print(mm, 4);
- lcd.print(" mm");
- lcd.setCursor(0,1);
- lcd.print(inch, 4);
- lcd.print(" inch");
- }
- else {
- lcd.setCursor(0,0);
- lcd.print("--.---");
- lcd.print(" mm");
- lcd.setCursor(0,1);
- lcd.print("--.---");
- lcd.print(" inch");
- }
- // */
- /*
- Serial.print("zu wenig Bytes gelesen");
- Serial.print("\n");
- //*/
- }
- delay(300);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement