Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Temperaturskala in QBasic

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 11.06.2013, 20:59    Titel: Temperaturskala in QBasic Antworten mit Zitat

Hallo,

ich bin neu hier im Forum. Ich habe mich extra registriert, weil ich hoffe, dass ihr mir helfen könnt. Erstmal erkläre was ich für eine Aufgabe hatte. Es werden immer Daten erfasst und eingelesen. ( Volt / Spannung ) Diese musste ich statt Volt in Temperatur( °C) anzeigen lasen. So weit so gut. in QBasic ist das ja so das oben links der Punkt ( 0,0) und rechts unten ( 320/200) ( SCREEN 13) ist. Also wenn die Temperatur ansteigt, sinkt sie in der Grafik nach unten. Ich komme nicht drauf wie ich also die Skalierung so machen kann, dass die Temperatur nicht bei ( 0,0) anfängt und nach unten geht sondern von unten nach oben ( Normalfall) steigt. Dazu muss ich sagen, dass ich das erste mal überhaupt programmiere. I-wie begeistert mich das und ich will unbedingt eine Lösung dafür finden. Ich hoffe ich könnt mir einen Stupser in die richtige Richtung geben.

Vielen Dank schonmal für die Hilfe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 11.06.2013, 21:22    Titel: Antworten mit Zitat

Man kann da natürlich die Koordinaten immer selbst umrechnen (das würde ich in diesem Fall machen); oder du stellst die Koordinaten mittels WINDOW um.
http://www.freebasic-portal.de/befehlsreferenz/window-136.html
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 11.06.2013, 21:49    Titel: Antworten mit Zitat

wie kann man den die Koordinaten selbst umrechnen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2459
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 11.06.2013, 22:11    Titel: Antworten mit Zitat

Koordinatenumrechnung: Ist in Deinem Fall normalerweise eine einfache lineare Transformation, d.h.
Code:
xPix = xReal * a + b
yPix = yReal * c + d

=> Jetzt musst Du nur noch a, b, c und d bestimmen, wofür sich zwei einfache lineares Gleichungssysteme eigen (x und y können hier vollkommen separat betrachtet werden): Du definierst zwei Punkte über die Diagonale, wo Du einen bestimmten Pixelwert einen bestimmten Temperaturwert bzw. sonstige Grösse zuweist. => Diese Werte dann als gegebene Zahlen bei xReal, xPix, yReal und yPix einsetzen -> entstandene Gleichungssysteme nach a und b bzw. c und d auflösen.

Umsetzung in QB: Mit Vorteil a, b, c und d als SHARED-Variablen speichern -> zwei FUNCTIONs der Art xReal2xPix() und yReal2yPix() und LINE, PSET einkapseln. Sieht dann grob so aus:

Code:
DIM SHARED a!, b!, c!, d!

' a, b, c und d als Initialisierung berechnen

FUNCTION xReal2xPix(xr!)
  xReal2xPix! = xr! * a! + b!
END FUNCTION

FUNCTION yReal2yPix(yr!)
  yReal2yPix! = yr! * c! + d!
END FUNCTION

SUB LineInRealKoord(x1!, y1!, x2!, y2!, farbe%)
  LINE (xReal2xPix!(x1!), yReal2yPix!(y1!))-(xReal2xPix!(x2!), yReal2yPix!(y2!)), farbe%
END SUB

SUB PsetInRealKoord(x!, y!, farbe%)
  PSET (xReal2xPix!(x!), yReal2yPix!(y!)), farbe%
END SUB


Übrigens typische nichtlineare Koordinaten sind beispielsweise Längen- und Breitengrad auf ein Bildschirmabbild übertragen, dort wird es dann entsprechend komplexer.
_________________
Teste die PC-Sicherheit mit www.sec-check.net


Zuletzt bearbeitet von dreael am 11.06.2013, 22:12, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 11.06.2013, 22:12    Titel: Antworten mit Zitat

Dein Fenster ist 200 Pixel hoch; wenn du einen Wert von y Pixel zeichnen willst, zeichnest du ihn eben nicht nach (x, y) sondern nach (x, 200-y).
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 11.06.2013, 22:18    Titel: Antworten mit Zitat

erstmal vielen Dank an euch. Bin gerade bissl verwirrt womit ich genau anfangen soll.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 11.06.2013, 22:37    Titel: Antworten mit Zitat

so wie es jetzt aussieht funktioniert das bei mir. ob das so richtig ist, sehe ich wenn ich verschiedene Spannungen dran anschließe. Ich habe noch paar Fragen und wäre für eure Hilfe dankbar. Oder muss ich extra neuen Thread dafür aufmachen?

1. wie kann man die Grafik größer machen? Mein Problem ist folgendes. Die Temperaturerfassung ist auf einer Grafik ca. 5 cm x 4cm . Ich möchte die größer haben damit die verschiedene °C Skalierungen weiter auseinander liegen.

2. Kann man i-wie die Schrift kleiner machen? Ich muss die Temperatur im Temperaturtrend beschriften. Oder gibt es da bessere Möglichkeiten.

Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 11.06.2013, 23:01    Titel: Antworten mit Zitat

Um die Werte doppelt so hoch einzuzeichnen, zeichnest du sie nicht nach (x, 200-y), sondern nach (x, 200-2*y). Wenn du es auch doppelt so breit willst, dann eben (2*x, 200-2*y). Halt einfach ein bisschen Mathematik.

Ist weiß jetzt nicht, welche Schriftgröße unter QBasic standardmäßig vorgegeben ist; umstellen kannst du mit WIDTH:
http://www.freebasic-portal.de/befehlsreferenz/width-anweisung-138.html
Orientiere dich aber an der Hilfe zu SCREEN, welche Werte überhaupt möglich sind.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 11.06.2013, 23:10    Titel: Antworten mit Zitat

super, habe jetzt einen größeren abstand. Aber wenn ich kann aber nicht den ganzen Bereich von 0 bis 30 °C abdecken weil es so aussieht also ob es über den Rand geht. Ich meine ob man auch das Grafikfeld im ganzen Screen vergrößern kann und es nicht wie bei mir nur oben rechts sich befindet traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 12.06.2013, 00:06    Titel: Antworten mit Zitat

Ich weiß nicht genau, was du willst - willst du das Feld verschieben?
(x*2 + 50, 180 - y*2) (z. B.) - dann haben wir schon ziemlich das, was dreael vorhin gepostet hat.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 12.06.2013, 08:18    Titel: Antworten mit Zitat

super. das funktioniert schon. vielen Dank.

2 Sachen noch happy

ich kriege jetzt immer punkte auf meinem Temperaturtrend ausgelesen was so auch richtig ist. Jetzt muss ich die auch zuordnen welche Temperatur das ist.
Ich habe jetzt 2 Linien ( einmal x-achse und einmal y-achse ) gezeichnet. Ich kann natürlich alle 3°C beschriften aber die Buchstaben sind zu Groß für die Nummerierung. Wenn ich die Linien so zeichnen lasse und die Punkte dann bei dem Wert sind wo auch die Linie ist, ist die Linie der Achsen im Vordergrund und nicht der Temperaturpunkt. Da brächte ich einen Stupser. Danke nochmal
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 12.06.2013, 16:22    Titel: Antworten mit Zitat

Die Objekte werden einfach in der Reihenfolge gezeichnet, in der du sie angibst. Wenn du erst die Temperatur-Punkte zeichnest und dann die Hilfslinien, dann sind die Hilfslinien natürlich im Vordergrund und überdecken die Temperatur-Punkte.

Zu den zu großen Zahlen kann ich nur vorschlagen, die Zahlen selbst über Zeichenbefehle zu zeichnen. DRAW ist in diesem Zusammenhang recht praktisch.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 12.06.2013, 21:28    Titel: Antworten mit Zitat

Ich bin jetzt fertig geworden. Ich danke dir vielmals. Es hat mir richtig angefangen Spaß zu machen sowas zu programmieren. Super Hilfe lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 14.06.2013, 07:22    Titel: Antworten mit Zitat

Da bin ich wieder. Ich war gestern in der Schule und dort haben wir uns geeinigt, dass die Temperaturwerte nciht wie bei mir von 0-5V = 0-30 °C sondern: 0-1V = -20-0°C und 1-5V = 0-80°C. Jetzt weiß ich leider nciht wie ich in qbasic die werte der Spannungen zu den Temperaturen zuordnen kann und überhaupt wie ich das im Minusbereich mache. traurig Und ich dachte, ich sei fertig grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1749
Wohnort: [JN58JR] DeltaLabs.de

BeitragVerfasst am: 14.06.2013, 11:11    Titel: Antworten mit Zitat

WENN Spannung KLEINER 1Volt DANN ist das ERGEBNISS, TEMPERATURBEREICH-1 GETEILT durch SPANNUNGSBREICH-1 MAL Aktuelle Spannung ANSONSTEN ist das ERGEBNISS TEMPERATURBEREICH-2 GETEILT durch SPANNUNGSBREICH-2 MAL Aktuelle Spannung.

zwinkern

MfG
TPM
_________________
[ WebFBC ][ OPS ][ DeltaLab's ][ ToOFlo ][ BGB-Movie ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4214
Wohnort: ~/

BeitragVerfasst am: 14.06.2013, 18:58    Titel: Antworten mit Zitat

stepaschka55 hat Folgendes geschrieben:
Und ich dachte, ich sei fertig grinsen

Hier liegt der Fehler - Programme sind niemals fertig. grinsen

Den Negativbereich bekommst du, indem du die gezeichneten Punkte höher zeichnest (nicht (x, 200-y), sondern (x, 180-y) oder so etwas in der Art); dann hast du bei negativen Ergebnissen von y nach unten noch Platz für die Anzeige.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stepaschka55



Anmeldungsdatum: 11.06.2013
Beiträge: 9

BeitragVerfasst am: 15.06.2013, 10:49    Titel: Antworten mit Zitat

So, jetzt sage ich nicht dass ich fertig bin aber ich habe die Aufgabe erstmal geschafft. und wie das so aussieht würde ich in den nächsten Tagen das Bild hier posten. habe jetz7t eine Skala von -20 bis +80 °C ich bin begeistert. Da musste ich nur eine Formel finden die dazu passt und der rest war easy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz