Buggfix Plus
Aktuellt datum och tid: 02.50 2019-10-18

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 3 inlägg ] 
Författare Meddelande
InläggPostat: 04.32 2019-09-29 
Användarvisningsbild

Blev medlem: 15.48 2005-01-28
Inlägg: 5728
Ort: X-län
Programmet är inte klart ännu.
Tanken är att jag laddar ett CNC program i maskinen som är ett gäng borrcyckler med väntetid i botten och MCU:n ska då känna av att mätvärdena via en sjutpot som är ansluten till A/D omvandlaren har stannat till och registrera det, för att invänta nästa stabila värdet och så ska det fortsätta tills hela CNC-programmet är genomkört.
A/D delen av programmet är inte klart, men ändå har en logiskbug smygit sig in, är det någon som ser vad jag gjort för fel?

Bilaga:
CNC_rof_prob Logik fel.png

De rader i röda block är de som inte ska dyka upp.

Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
#include <SoftwareSerial.h>

String Text ="";
int utdata = 0;
int deep = 0;
int Data = 0;
int st = 0;
int incomingByte = 0; // for incoming serial data
SoftwareSerial mySerial(10, 11); // RX, TX


void setup() {
  // put your setup code here, to run once:
  // Open serial communications and wait for port to open:
  Serial.begin(57600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}


void loop() {
if (st == 0) {
Serial.println("");
Serial.println("Enter numberss of sampel: ");
Serial.println(" n or N = new sampel range ");
st=1;
  }
  if (Serial.available() > 0) {
    // read the incoming byte:
    incomingByte = Serial.read();

    // say what you got:
    //Serial.println("Okey, got it.");
    //Serial.print("I received: ");
    Data=(incomingByte-48);
    if (incomingByte==110){st=99;}
    if (incomingByte==78) {st=99;}
    if (st==99){
     Text ="";
     utdata = 0;
     deep = -1;
     Data = 0;
     st = 0;
     incomingByte = 0; // for incoming serial data
    }

    if (Data>=0){
      if (incomingByte>=48 && incomingByte<=57){
       //Serial.println("Siffror");}
       //Serial.println(incomingByte);
       //Serial.println("<---incomingByte");
       //Serial.println(Data);
       //Serial.println("<---Data");
       Text = Text+String(Data);
       //Serial.print(Text);
       //Serial.println("<---Text");
       utdata=Text.toInt();
       //Serial.print(utdata);
       //Serial.println("<---utdata");
      }
    }
    if (Serial.available() == 0) {
      st=2;
      Serial.println("----------------------------------------------------");
      Serial.println("Okey, got it.");
    }
  }
 
  if (st == 2){
    // put your main code here, to run repeatedly:
    if (deep<0){st=0;}
    if (deep>0){
      Serial.print(",");
    }
    Serial.print(deep);
    deep=deep+1;
    if (deep>utdata) {
      Serial.println(" ");
      deep=0;
    }
  }
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(25);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(10);                       // wait for a second
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(25);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(100);                       // wait for a second
}


Logga in för att visa de filer som bifogats till detta inlägg.


Upp
 Profil  
 
InläggPostat: 20.38 2019-09-29 
Användarvisningsbild

Blev medlem: 20.23 2005-08-06
Inlägg: 24799
Ort: Oskarshamn (En bit utanför)
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
if (incomingByte==110){st=99;}
    if (incomingByte==78) {st=99;}
    if (st==99){


Om första eller andra if-raden är sann, så blir den tredje också sann.
Det innebär att om incomingByte är 110 eller 78 så ska allt i tredje if-raden hända.
Ska det vara så?

Annars: Sätt den sista if-delen först istället. :)

Jag har inte lusläst koden, så jag vet inte om det löser problemet, men det var det första som stack ut.


Upp
 Profil  
 
InläggPostat: 02.40 2019-09-30 
Användarvisningsbild

Blev medlem: 15.48 2005-01-28
Inlägg: 5728
Ort: X-län
Ja den ska funktionellt vara så, skulle nog gå att skriva det som en if-sats med ett 'or'-styrkod mellan de båda villkoren.
Den är till för att kolla om "N" eller "n" har mottagits.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 3 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010