Probleem melding

Hallo;
Ik ben met een sketch bezig voor een kunstmatige horizon,maar ik krijg telkens een probleem melding, zie bijlage.Kan iemand mij vertellen wat deze melding inhoud. ;(
Gr bert

Electronica is mooi als het goed werkt

Post anders even je code erbij, dan zien we de fout zo. Je zult wel iets fouts meegeven aan je println functie op (jawel) regel 33.

@gents hieronder: als er "sketch" staat zal het wel Arduino-taal zijn he.

[Bericht gewijzigd door flipflop op zondag 8 april 2018 18:46:32 (23%)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Sine

Moderator

Welke taal? Wat voor device? Welke compiler?

Kom op mensen, zo moeilijk is het niet.

Arco

Special Member

Een sketch is meer iets voor in het theater... ;)
't Is inderdaad soms wel lastig om met veel moeite alle benodigde gegevens boven water te krijgen...
(sourcecode lijkt me inderdaad ook wel noodzakelijk)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Het is inderdaad regel 33 printin functie .hier de code van de Sketch.

c code:

[] //Thanks to Adrian Fernandez
//Communication updates by M.Furkan Bahat November 2014
//For more information http://mfurkanbahat.blogspot.com.tr/

import processing.serial.*;
import cc.arduino.*;

int W=1400; //My Laptop's screen width 
int H=700;  //My Laptop's screen height 
float Pitch; 
float Bank; 
float Azimuth; 
float ArtificialHoizonMagnificationFactor=0.7; 
float CompassMagnificationFactor=0.85; 
float SpanAngle=120; 
int NumberOfScaleMajorDivisions; 
int NumberOfScaleMinorDivisions; 
PVector v1, v2; 


Serial port;
float Phi;    //Dimensional axis
float Theta;
float Psi;

void setup() 
{ 
  size(W, H); 
  rectMode(CENTER); 
  smooth(); 
  strokeCap(SQUARE);//Optional 
  
  println(Serial.list()); //Shows your connected serial ports  (Regel 33)
  port = new Serial(this, Serial.list()[0], 115200); 
  //Up there you should select port which arduino connected and same baud rate.
  port.bufferUntil('\n'); 
}
void draw() 
{ 
  background(0); 
  translate(W/4, H/2.1);  
  MakeAnglesDependentOnMPU6050(); 
  Horizon(); 
  rotate(-Bank); 
  PitchScale(); 
  Axis(); 
  rotate(Bank); 
  Borders(); 
  Plane(); 
  ShowAngles(); 
  Compass(); 
  ShowAzimuth(); 
}
void serialEvent(Serial port) //Reading the datas by Processing.
{
   String input = port.readStringUntil('\n');
  if(input != null){
   input = trim(input);
  String[] values = split(input, " ");
 if(values.length == 3){
  float phi = float(values[0]);
  float theta = float(values[1]); 
  float psi = float(values[2]); 
  print(phi);
  print(theta);
  println(psi);
  Phi = phi;
  Theta = theta;
  Psi = psi;
   }
  }
}
void MakeAnglesDependentOnMPU6050() 
{ 
  Bank =-Phi/5; 
  Pitch=Theta*10; 
  Azimuth=Psi;
}
void Horizon() 
{ 
  scale(ArtificialHoizonMagnificationFactor); 
  noStroke(); 
  fill(0, 180, 255); 
  rect(0, -100, 900, 1000); 
  fill(95, 55, 40); 
  rotate(-Bank); 
  rect(0, 400+Pitch, 900, 800); 
  rotate(Bank); 
  rotate(-PI-PI/6); 
  SpanAngle=120; 
  NumberOfScaleMajorDivisions=12; 
  NumberOfScaleMinorDivisions=24;  
  CircularScale(); 
  rotate(PI+PI/6); 
  rotate(-PI/6);  
  CircularScale(); 
  rotate(PI/6); 
}
void ShowAzimuth() 
{ 
  fill(50); 
  noStroke(); 
  rect(20, 470, 440, 50); 
  int Azimuth1=round(Azimuth); 
  textAlign(CORNER); 
  textSize(35); 
  fill(255); 
  text("Azimuth:  "+Azimuth1+" Deg", 80, 477, 500, 60); 
  textSize(40);
  fill(25,25,150);
  text("M.Furkan Bahat", -350, 477, 500, 60); 
}
void Compass() 
{ 
  translate(2*W/3, 0); 
  scale(CompassMagnificationFactor); 
  noFill(); 
  stroke(100); 
  strokeWeight(80); 
  ellipse(0, 0, 750, 750); 
  strokeWeight(50); 
  stroke(50); 
  fill(0, 0, 40); 
  ellipse(0, 0, 610, 610); 
  for (int k=255;k>0;k=k-5) 
  { 
    noStroke(); 
    fill(0, 0, 255-k); 
    ellipse(0, 0, 2*k, 2*k); 
  } 
  strokeWeight(20); 
  NumberOfScaleMajorDivisions=18; 
  NumberOfScaleMinorDivisions=36;  
  SpanAngle=180; 
  CircularScale(); 
  rotate(PI); 
  SpanAngle=180; 
  CircularScale(); 
  rotate(-PI); 
  fill(255); 
  textSize(60); 
  textAlign(CENTER); 
  text("W", -375, 0, 100, 80); 
  text("E", 370, 0, 100, 80); 
  text("N", 0, -365, 100, 80); 
  text("S", 0, 375, 100, 80); 
  textSize(30); 
  text("COMPASS", 0, -130, 500, 80); 
  rotate(PI/4); 
  textSize(40); 
  text("NW", -370, 0, 100, 50); 
  text("SE", 365, 0, 100, 50); 
  text("NE", 0, -355, 100, 50); 
  text("SW", 0, 365, 100, 50); 
  rotate(-PI/4); 
  CompassPointer(); 
}
void CompassPointer() 
{ 
  rotate(PI+radians(Azimuth));  
  stroke(0); 
  strokeWeight(4); 
  fill(100, 255, 100); 
  triangle(-20, -210, 20, -210, 0, 270); 
  triangle(-15, 210, 15, 210, 0, 270); 
  ellipse(0, 0, 45, 45);   
  fill(0, 0, 50); 
  noStroke(); 
  ellipse(0, 0, 10, 10); 
  triangle(-20, -213, 20, -213, 0, -190); 
  triangle(-15, -215, 15, -215, 0, -200); 
  rotate(-PI-radians(Azimuth)); 
}
void Plane() 
{ 
  fill(0); 
  strokeWeight(1); 
  stroke(0, 255, 0); 
  triangle(-20, 0, 20, 0, 0, 25); 
  rect(110, 0, 140, 20); 
  rect(-110, 0, 140, 20); 
}
void CircularScale() 
{ 
  float GaugeWidth=800;  
  textSize(GaugeWidth/30); 
  float StrokeWidth=1; 
  float an; 
  float DivxPhasorCloser; 
  float DivxPhasorDistal; 
  float DivyPhasorCloser; 
  float DivyPhasorDistal; 
  strokeWeight(2*StrokeWidth); 
  stroke(255);
  float DivCloserPhasorLenght=GaugeWidth/2-GaugeWidth/9-StrokeWidth; 
  float DivDistalPhasorLenght=GaugeWidth/2-GaugeWidth/7.5-StrokeWidth;
  for (int Division=0;Division<NumberOfScaleMinorDivisions+1;Division++) 
  { 
    an=SpanAngle/2+Division*SpanAngle/NumberOfScaleMinorDivisions;  
    DivxPhasorCloser=DivCloserPhasorLenght*cos(radians(an)); 
    DivxPhasorDistal=DivDistalPhasorLenght*cos(radians(an)); 
    DivyPhasorCloser=DivCloserPhasorLenght*sin(radians(an)); 
    DivyPhasorDistal=DivDistalPhasorLenght*sin(radians(an));   
    line(DivxPhasorCloser, DivyPhasorCloser, DivxPhasorDistal, DivyPhasorDistal); 
  }
  DivCloserPhasorLenght=GaugeWidth/2-GaugeWidth/10-StrokeWidth; 
  DivDistalPhasorLenght=GaugeWidth/2-GaugeWidth/7.4-StrokeWidth;
  for (int Division=0;Division<NumberOfScaleMajorDivisions+1;Division++) 
  { 
    an=SpanAngle/2+Division*SpanAngle/NumberOfScaleMajorDivisions;  
    DivxPhasorCloser=DivCloserPhasorLenght*cos(radians(an)); 
    DivxPhasorDistal=DivDistalPhasorLenght*cos(radians(an)); 
    DivyPhasorCloser=DivCloserPhasorLenght*sin(radians(an)); 
    DivyPhasorDistal=DivDistalPhasorLenght*sin(radians(an)); 
    if (Division==NumberOfScaleMajorDivisions/2|Division==0|Division==NumberOfScaleMajorDivisions) 
    { 
      strokeWeight(15); 
      stroke(0); 
      line(DivxPhasorCloser, DivyPhasorCloser, DivxPhasorDistal, DivyPhasorDistal); 
      strokeWeight(8); 
      stroke(100, 255, 100); 
      line(DivxPhasorCloser, DivyPhasorCloser, DivxPhasorDistal, DivyPhasorDistal); 
    } 
    else 
    { 
      strokeWeight(3); 
      stroke(255); 
      line(DivxPhasorCloser, DivyPhasorCloser, DivxPhasorDistal, DivyPhasorDistal); 
    } 
  } 
}
void Axis() 
{ 
  stroke(255, 0, 0); 
  strokeWeight(3); 
  line(-115, 0, 115, 0); 
  line(0, 280, 0, -280); 
  fill(100, 255, 100); 
  stroke(0); 
  triangle(0, -285, -10, -255, 10, -255); 
  triangle(0, 285, -10, 255, 10, 255); 
}
void ShowAngles() 
{ 
  textSize(30); 
  fill(50); 
  noStroke(); 
  rect(-150, 400, 280, 40); 
  rect(150, 400, 280, 40); 
  fill(255); 
  Pitch=Pitch/5; 
  int Pitch1=round(Pitch);  
  text("Pitch:  "+Pitch1+" Deg", -20, 411, 500, 60); 
  text("Bank:  "+Bank*100+" Deg", 280, 411, 500, 60); 
}
void Borders() 
{ 
  noFill(); 
  stroke(0); 
  strokeWeight(400); 
  rect(0, 0, 1100, 1100); 
  strokeWeight(200); 
  ellipse(0, 0, 1000, 1000); 
  fill(0); 
  noStroke(); 
  rect(4*W/5, 0, W, 2*H); 
  rect(-4*W/5, 0, W, 2*H); 
}
void PitchScale() 
{  
  stroke(255); 
  fill(255); 
  strokeWeight(3); 
  textSize(24); 
  textAlign(CENTER); 
  for (int i=-4;i<5;i++) 
  {  
    if ((i==0)==false) 
    { 
      line(110, 50*i, -110, 50*i); 
    }  
    text(""+i*10, 140, 50*i, 100, 30); 
    text(""+i*10, -140, 50*i, 100, 30); 
  } 
  textAlign(CORNER); 
  strokeWeight(2); 
  for (int i=-9;i<10;i++) 
  {  
    if ((i==0)==false) 
    {    
      line(25, 25*i, -25, 25*i); 
    } 
  } 
}
Electronica is mooi als het goed werkt

Die haakopenen haaksluiten op de eerste regel bevalt me ook niet. Ik weet niet wat dat voor raars doet/veroorzaakt. (Als in: Ik snap niet dat ie pas op regel 33 voor het eerst met iets te zeuren komt).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Als ik de sketch open, krijg ik eerst deze mededeling,misschien een aanwijzing.

Electronica is mooi als het goed werkt

Op 8 april 2018 20:32:48 schreef K7Jz:
Gewoon weghalen die regel..

Dat is het betere coderen. ;-)
Regels die problemen veroorzaken verwijderen.
De fout is eruit en de code wordt korter.

Tja het lijkt me een stukje overbodige printout.

Deze vind ik ook leuk: ArtificialHoizonMagnificationFactor
consistent een typo blijven gebruiken (in de langste variabelenaam die ik ooit zag)

Of deze: if ((i==0)==false) :D

Dit is ook een beauty:

c code:


void serialEvent(Serial port) //Reading the datas by Processing.
{
   String input = port.readStringUntil('\n');
  if(input != null){
   input = trim(input);
  String[] values = split(input, " ");
 if(values.length == 3){
  float phi = float(values[0]);
  float theta = float(values[1]); 
  float psi = float(values[2]); 
  print(phi);
  print(theta);
  println(psi);
  Phi = phi;
  Theta = theta;
  Psi = psi;
   }
  }
}

Verkeerd inspringen, omslachtige tussenvariabelen en dan weer de vers verhakte data op dezelfde manier uitprinten als hoe je hem ontving.

Verander:size(W, H);

In : size(1400,700);

[Bericht gewijzigd door K7Jz op zondag 8 april 2018 23:16:57 (96%)

Dit is nu een typisch voorbeeld wat in dit topic aangehaald is: https://www.circuitsonline.net/forum/view/140643

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Arco

Special Member

In goede code geeft men:
- korte en betekenisvolle namen aan variabelen.
- commentaar moet zinvol zijn.
- bij wijzigingen moet commentaar ook worden aangepast. (wordt vaak niet gedaan met een onbegrijpelijk geheel als gevolg)
- niet overcommentarieren. Dit is bijvoorbeeld zinloos:

code:


Led = 1                   'Maak led 1
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Dat is allemaal BASIC-code.

Weliswaar geschreven in C, maar toch.

mel

Golden Member

Ik zou niet graag willen vliegen met zo'n ding..Ik koop wel een echte ADI :)

u=ir betekent niet :U bent ingenieur..

Het gaat dus hierover: Artificial Horizon and Compass Using Arduino-Processing-MPU6050

De vierkante haakje in de geposte code staan er teveel.
In Processing 3 (mijn versie 3.0) krijg je inderdaad de foutcode.
In Processing 2 (mijn versie 2.2.1) werkt de code wel, krijg je horizon en kompas te zien. Mooi!
Er moet wel tenminste 1 seriële poort aanwezig zijn.

Je kan de verschillende versie hier downloaden:
https://processing.org/download/

Mijn thuis is waar mijn Weller staat

Op 9 april 2018 03:37:53 schreef schaafuit:
Dat is allemaal BASIC-code.

Weliswaar geschreven in C, maar toch.

Ja zoals ik het begrijp stuurt een Arduino 3 rolcoördinaten door en maakt dit programmaatje in 'Processing' er een plaatje bij op de PC.

Ik vrees dat de routines (circle, rect, line, text, etc) continu worden aangeroepen. Op een hedendaagse laptop is dit geen probleem maar mooi had natuurlijk geweest een statische bitmap in te laden en deze te roteren/schuiven.

Wat ik ook verander in de Sketch, maakt niets uit ik kom gewoon niet verder omdat deze melding noch steeds verschijnt.Wat betekend deze melding??

Electronica is mooi als het goed werkt

Als je je leesbrilletje nu eens opzet, kun je er wel eens achter komen
dat het antwoord daarop al bijna een dag geleden is gepost.

Doe eens wat moeite, {man,vrouw,overig}. Er staat $@%#! precies wat er
mis is en waar je meer info kunt vinden. Hoe duidelijk wil je het
hebben?

Dan het inhoudelijke deel: ik zou er netjes #defines van maken. Dat is
ook de normale conventie voor aanduidingen in hoofdletters (hint, hint).

O, en dat het over 'command' spreekt zegt al boekdelen: de omgeving is
zelf ook brak, de auteur daarvan snapt blijkbaar ook weinig van C. Maar
dat terzijde. De oplossing ligt in je schoot.

[Bericht gewijzigd door schaafuit op maandag 9 april 2018 17:08:41 (18%)

Die melding betekent dat je moet doen wat ik eerder zei:

Verander:size(W, H);

In : size(1400,700);

Het ziet er allemaal heel krakkemikkig uit. een "Command" die geen variabelen snapt maar wel nummers is uiterst verdacht. Het lijkt erop alsof je met een systeem/library werkt die niet heel vakkundig is opgezet. Het hoeft niet erg te zijn, maar weer erop bedacht dat ik elke regel wel rare fouten kunnen zitten.

ik heb de bril noch eens opgepoetst :+ En de (W,H); veranderd in(1400,700); en inderdaad dan krijg ik een leeg scherm te zien met de mededeling, Sketch 180407a (reageert niet).Ik denk dat dit voor mij te hoog is gegrepen,met mijn Kennes hier over, en wat er pressies bedoeld word gaat mij te ver, erg jammer dat dit niet aan de praat is te krijgen. :'(
Mvrgr Bert

Electronica is mooi als het goed werkt

Op 8 april 2018 16:49:33 schreef Bertjebuk:
Hallo;
Ik ben met een sketch bezig voor een kunstmatige horizon,

Gr bert

Ga je Flightsimulator nabouwen?

Op 9 april 2018 21:29:22 schreef Bertjebuk:
ik heb de bril noch eens opgepoetst :+ En de (W,H); veranderd in(1400,700); en inderdaad dan krijg ik een leeg scherm te zien met de mededeling, Sketch 180407a (reageert niet).

Dat beketent volgens mij dat het programma z'n inkomende berichten (over
muisbewegingen e.d.), ten minste voor dat venster, niet ophaalt. Hoe dat
in dit geval komt kan in je niet vertellen, ik weet niet in hoeverre de
omgeving die je gebruikt dat automatiseert.

Ik denk dat dit voor mij te hoog is gegrepen,met mijn Kennes hier over, en wat er pressies bedoeld word gaat mij te ver, erg jammer dat dit niet aan de praat is te krijgen. :'(

Tja, dat soort /frameworks/ gebruiken lijkt op het oog altijd
makkelijker, maar als je er eenmaal mee probeert te werken blijkt vaak
dat goede algemene programmeervaardigheden toch nodig zijn. En als je
die wel hebt, kun je het eigenlijk net zo goed helemaal zelf doen...

Het hoeft niet erg te zijn, maar weer wees erop bedacht dat ik in elke regel wel rare fouten kunnen zitten.

;-)