Ideen gesucht: Spannungs-Signalwandlung

Der chaotische Hauptfaden

Moderatoren: Finger, Sven, TDI, Heaterman, duese

Benutzeravatar
Fritzler
Beiträge: 10682
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler » Mo 2. Aug 2021, 17:48

Nee, das is nich Python, sondern C.
Da ist das nur ein "casting".

Benutzeravatar
KampfKeks_MRZ
Beiträge: 152
Registriert: So 11. Aug 2013, 17:52

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von KampfKeks_MRZ » Mo 2. Aug 2021, 17:56

Fritzler hat geschrieben:
Mo 2. Aug 2021, 17:48
Nee, das is nich Python, sondern C.
Da ist das nur ein "casting".
Öhm... Was bitte möchtest du mir sagen?

C(++) -> Sprache, die ich verwende.

Anse
Beiträge: 1742
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Anse » Mo 2. Aug 2021, 19:58

KampfKeks_MRZ hat geschrieben:
Mo 2. Aug 2021, 17:56
C(++) -> Sprache, die ich verwende.
Was jetzt, C oder C++. Das macht schon einen kleinen Unterschied.

Ich verstehe übrigen auch nicht, was Fritzler jetzt mit Python meint :?

Benutzeravatar
Fritzler
Beiträge: 10682
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler » Mo 2. Aug 2021, 20:02

Hier gehts doch um Zahlumwandlung zu String?
Da kannste doch nicht einfach was nach int casten und wohin speichern.
On the fly Umwandlungen machen eher Hochsprachen udn das sind C/C++ lange nicht.

Also sag eher was die Zeile jetz machen soll, sonst führt das zu nix.

Benutzeravatar
Hightech
Beiträge: 7413
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech » Mo 2. Aug 2021, 20:04

KampfKeks_MRZ hat geschrieben:
Mo 2. Aug 2021, 17:56
Fritzler hat geschrieben:
Mo 2. Aug 2021, 17:48
Nee, das is nich Python, sondern C.
Da ist das nur ein "casting".
Öhm... Was bitte möchtest du mir sagen?

C(++) -> Sprache, die ich verwende.
Dann sollstest du dir dringent mal die Typen von C, C++ anschauen und wie man damit umgeht und was ein typ casting ist.
Wenn dir jetzt jemand die Lösung präsentiert und du die zwar verwendest aber überhaupt nicht verstehst was da passiert, kommst du in C,C++ keinen Schritt vorran und läufst gegen die nächste Wand!!

mit buf = (int) data_buffer erlärst du halt blos, data_buffer ist ein INT, egal was da drin steht, dann steht halt in buf 5 als Zahl drin.
So geht das in C nicht !

Benutzeravatar
Hightech
Beiträge: 7413
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech » Mo 2. Aug 2021, 20:06


Benutzeravatar
Hightech
Beiträge: 7413
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech » Mo 2. Aug 2021, 20:07


Benutzeravatar
Fritzler
Beiträge: 10682
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler » Mo 2. Aug 2021, 20:10

Du hast das wichtigste Buch zu C vergessen:
https://de.wikipedia.org/wiki/The_C_Pro ... g_Language

Benutzeravatar
Hightech
Beiträge: 7413
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech » Mo 2. Aug 2021, 20:24

Ich zeige hier mal einen Code von einem Projekt. Dort wird Temperatur gemessen und auch auf einem I2C LC-Display ausgegeben:

Das ist der Display-Ausgabeteil mit itoa wird der Integerwert in eine Zeichenkette umgewandelt.

Code: Alles auswählen

printf_lcd(0,2,"EIS:",10);
  
  itoa(t_out,buffer,10);
  write_byte_lcd(8,2,warn);
  printf_lcd(9,2,buffer,10);
  
  printf_lcd(14,2,"C",10);
  write_byte_lcd(13,2,0x80);
Oder auch so, aus einem anderen Projekt:

Code: Alles auswählen

char *bu="0";
		lcd_gotoxy(0,2);
	    lcd_puts("fl0:");
	    lcd_gotoxy(5,2);
	    itoa(fl0,bu,10);
	    lcd_puts(bu);


Code: Alles auswählen

//************************************************************************
// Projekt Includes
//************************************************************************
#include "defines.h"                        // Projektdefinitionen
#include "lcd_dip204ks0073_spi_avr.c"       // LCD-Funktionen
#include "ADC_Messung.h"
#include "taster.c"
//************************************************************************
// AVR/GCC Includes
//************************************************************************
#include <avr/eeprom.h>
#include <stdbool.h> 
#include "main.h"
#include <avr/interrupt.h>
#include <avr/io.h>                         // IO-Grundfunktionen
#include <util/delay.h>                     // Pausenfunktionen
#include <string.h>                         // Stringfunktion
#include <stdio.h>                          // Standardfunktion
#include <stdlib.h>                         // Standardbibliothek

//************************************************************************
// Variablenbereich
//************************************************************************
struct lcd_struc lcd;       // LCD Datensatz
unsigned char temp  = 0;    // Testvariable
unsigned char temp2 = 1;    // Testvariable
unsigned int mess[1];
char buffer[4];
char warn;
int time;
bool motor=false;
bool kompr=false;
bool pause=false;
bool kpause=false;
int t_pause=0;
int t_timer=0;
int k_timer=0;

int t_tab[]=
{
15,16,18,19,20,21,22,23,24,25,
26,27,28,29,31,32,33,35,36,38,
39,41,42,45,47,48,49,51,52,54,
56,57,60,62,65,66,68,72,75,78,
80,81,83,85,87,89,92,95,97,99,
102,105,107,110,112,114,116,118,121,124,127
};

ISR(TIMER1_OVF_vect)
{
cli();
time++;
TCNT1=34268;

t_pause--;
k_timer--;

  if (k_timer<=0)
  {
    k_timer=0;
    kpause=false;
  }
  
  if (t_pause<=1)
    {
    pause=true;
    t_pause=0;
    }
      else 
      {	
      pause=false;
      }
  if (pause)
  {
    t_timer++;
   }
   if (t_timer>=300)
   {
     t_timer=0;
     pause=false;
     t_pause=10;
  }

 sei();
};

ISR(PCINT1_vect){
  t_pause=10;
};

#define Motor_an PORTC|= (1<<PC2)
#define Motor_aus PORTC &= ~(1<<PC2)
#define Kompr_an PORTC |= (1<<PC3)
#define Kompr_aus PORTC &= ~(1<<PC3)

// ********************************************************************
// Hauptprogramm
// ********************************************************************
int main (void) {
  
  PCMSK1|=(1<<PCINT8);  
  PCICR|=(1<<PCIE1);  
  TCNT1=0xFA12;
  TCCR1B|=(1<<CS12);
  TIMSK1|=(1<<TOIE1);
  sei();
  tasten_init();
  spi_master_init();        // Hardware-SPI Initialisierung als Master
  init_lcd();               // LCD Initialisierung im SPI-Mode
  DDRC|= ((1<<PC2)|(1<<PC3));
  DDRC &=~(1<<PC0);
  
  int t_out;
  int t_soll_out;
  int t_soll;
  Motor_aus;
  Kompr_aus;
  t_soll=eeprom_read_word((uint16_t*)0);
  t_timer=10;
  while(1) {
    
    
/*--------------------------------------------------------------------------------------------*/
/*Tasten auswerten Sollwert Temp */
/*--------------------------------------------------------------------------------------------*/
    tasten_auswerten();
  if (get_taster(RUNTERK))
    {
    t_soll--;
    taster_reset(RUNTERK);
    }
  if (get_taster(RUNTERL))
    {
    eeprom_write_word((uint16_t*)0, t_soll);
     taster_reset(RUNTERL);
    }

  if (get_taster(HOCHK))
    {
    t_soll++;
    taster_reset(HOCHK);
    }
  if (get_taster(HOCHL))
    {
    eeprom_write_word((uint16_t*)0, t_soll);    
    taster_reset(HOCHL);
    }
    if(t_soll>60){t_soll=60;};
    if (t_soll<1){t_soll=1;};	
/*--------------------------------------------------------------------------------------------*/
/*Tasten auswerten Motor und Kühlung*/
/*--------------------------------------------------------------------------------------------*/
    
    
  if(get_taster(RECHTSK))
    {
    t_timer=0;  
    k_timer=10;
    motor=!motor;
    pause=false;
    taster_reset(RECHTSK);
    }

  if (motor&&!pause)
    {
      Motor_an;
    }
    else 
    {
    Motor_aus;
    }

  if(get_taster(LINKSK))
    {
    kompr=!kompr;
    k_timer=0;
    taster_reset(LINKSK);
    }

   if ((kompr&&!kpause)&&(t_soll-35<=(t_out-3)))
    {
     Kompr_an;
    }
    
    if (!kompr|| kpause|| (t_soll-35>=(t_out)))
      {
	
      Kompr_aus;
      };
/*--------------------------------------------------------------------------------------------*/
/*Temperaturmessung*/
/*--------------------------------------------------------------------------------------------*/  mess[1]=messung(1);
      for (int i=0;i<61;i++)
    {
      warn=' ';
      if (mess[1]<15)
      {
	warn=0x3C;
      }
	if (mess[1]>127)
	{
	  warn=0x3E;
	}      
      if (mess[1]<=t_tab[i])
      {
       t_out=(i-35);
      break;
      }
    }
    
  printf_lcd(0,2,"EIS:",10);
  
  itoa(t_out,buffer,10);
  write_byte_lcd(8,2,warn);
  printf_lcd(9,2,buffer,10);
  
  printf_lcd(14,2,"C",10);
  write_byte_lcd(13,2,0x80);
    
  printf_lcd(0,0,"Kuehlung",10);
  if (kompr)
  {
  printf_lcd(0,1,"AN ",10);  
  }
  else
    
  {
  printf_lcd(0,1,"AUS",10);
  }  
  
  printf_lcd(13,0,"Mischer",10);
  
  if (pause&&motor)
      {
  printf_lcd(10,1,"PAUSE",10);  
  }
  else
    
  {
  printf_lcd(10,1,"     ",10);
  }  
  if (motor)
  {
  printf_lcd(17,1,"AN ",10);  
  }
  else
    
  {
  printf_lcd(17,1,"AUS",10);
  }  
  
  printf_lcd(0,3,"SOLL: +",10);
  
  t_soll_out=t_soll-35;
  itoa(t_soll_out,buffer,10);
  printf_lcd(9,3,buffer,1);
  
  write_byte_lcd(13,3,0x80);
  printf_lcd(14,3,"C",10);
  printf_lcd(16,3,"-",10);
  }
}

Benutzeravatar
xoexlepox
Beiträge: 4778
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von xoexlepox » Di 3. Aug 2021, 05:50

Du hast das wichtigste Buch zu C vergessen:
https://de.wikipedia.org/wiki/The_C_Pro ... g_Language
Och neee .... Das ist zwar das "Standardwerk" zu C, aber die Sprache erlernen kann man (als Anfänger) damit nicht. Das ist eher etwas, um mal spezielle Dinge nachzuschlagen und einige "Kniffe" (z.B. "structs" und "unions") daraus abzuleiten, wenn man so einigermaßen vertraut ist mit C.

Antworten