Ideen gesucht: Spannungs-Signalwandlung

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

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

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler »

Nee, das is nich Python, sondern C.
Da ist das nur ein "casting".
Benutzeravatar
KampfKeks_MRZ
Beiträge: 362
Registriert: So 11. Aug 2013, 17:52
Wohnort: 52399 Merzenich
Kontaktdaten:

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von KampfKeks_MRZ »

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: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Anse »

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: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler »

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: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech »

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: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech »

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

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech »

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

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Fritzler »

Du hast das wichtigste Buch zu C vergessen:
https://de.wikipedia.org/wiki/The_C_Pro ... g_Language
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von Hightech »

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: 4814
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: Ideen gesucht: Spannungs-Signalwandlung

Beitrag von xoexlepox »

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