Valerius_San

Простые вопросы новичка.

133 сообщения в этой теме

Yurkin2015    323

Этот flag совсем не нужен, нет в нём никакого смысла. Он всегда будет равен 1 после выполнения  data_submit(dat);

Что нужно в программе-то сделать? Вы так и не объяснили.

Нужно вывести на индикатор цифры от 0 до 9 через промежутки 0.5 секунды?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

да программа вывести на семисегментный индикатор должна от 0 до 9 

 

 

Но как увязать передачу последнего бита последовательного кода через 74hc595 ,с переключением параллельного от 0 до 9.Понял что предыдущий путь и направление мысли не то-))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    323

Ну, тогда нужно просто всё сделать по порядку - в цикле сначала преобразуем j в сегментный код, затем отправляем на 74НС595, потом пауза 500мс


        for (int j=0;j<10;j++)
        {
           segchar(j);
           data_submit(dat);
           __delay_ms(500);
        }

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

Я думаю такая запись тоже не верна при последовательном коде,ведь порту не может быть присвоено такое значение

case 1 : PORTC =0x9F;break;

 

используется же только одна нога MCU

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556

@Wawchuk , а код вообще чей, Ваш ? Как Вы его писали, не понимая как он работает ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    556

Вы бы хоть схему, что ли, показали. Как у Вас там и что подключено - остаётся только догадываться.

1 минуту назад, Wawchuk сказал:

код  не мой конечно

Блин, там кода - 3.5 строки. Не пробовали свой написать ? В чужом г...е ковыряться всегда противнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

Собрана макетная плата с 16f676 и подключена к семисегментному индикатору с общим анодом 74HC595 (15 нога-А, 1-В, 2-С.....7 нога H)

#define DATA_595 PORTCbits.RC3
#define STROBE_595 PORTCbits.RC4
#define CLK_595 PORTCbits.RC5 

а дальше шью в железе, вариант снизу работает четко

void main(void) {
    system_init();  
    while(1)
    {
         {
        data_submit(0b10011111);    //1
        __delay_ms(200);
        data_submit(0b00100101);    //2
        __delay_ms(200);
        data_submit(0b00001101);    //3 ......

 

а со switch(seg) завис

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    323
1 час назад, Wawchuk сказал:

ведь порту не может быть присвоено такое значение

На колу мочало - начинай с начала? Где Вы были всё это время? Выходили покурить? Мы уже 23 часа назад обсудили порт С и осудили его использование в switch(seg)

Изменено пользователем Yurkin2015

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    323
1 час назад, Wawchuk сказал:

вариант снизу работает четко

Ну, ещё чуть-чуть осталось. В функции segchar() кладите в переменную dat свои нолики-единички и затем посылайте data_submit(dat).

Кстати, на всякий случай, для единички число 0b10011111 равно 0x9F, для двойки число 0b00100101 равно 0x25, для тройки число 0b00001101 =  0x0D и т.д. Это просто разные формы записи одних и тех же чисел: двоичная запись и шестнадцатеричная запись.

У Вас в коде эти числа уже записаны в segchar(). Правда немного другие, для двойки и тройки по крайней мере. Надо бы проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

вложил переменную  case 4 : dat =0x99;break;  ,и все случилось. Шестнадцатеричные значения пересчитаю. Спасибо за помощь.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

такая конструкция тоже работает

//--------------------------------------------
unsigned char dat,j;
unsigned char T0_count = 0;
//--------------------------------------------
void interrupt timer0(){
  switch (T0_count%10){
    case 1 : dat =0x9F;break;
    case 2 : dat =0x25;break;
    case 3 : dat =0x0D;break;
    case 4 : dat =0x99;break;
    case 5 : dat =0x49;break;
    case 6 : dat =0x41;break;
    case 7 : dat =0x1F;break;
    case 8 : dat =0x01;break;
    case 9 : dat =0x09;break;
    case 0 : dat =0x03;break;
    }
    data_submit(dat);
    T0_count++;
    if(T0_count>10){
      T0_count=0;
  }
  T0IF=0;
}

но это все статическая индикация ,а что почитать для перехода в динамическую индикацию ,пусть даже для 2-х разрядов-?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    634

То же самое, только дополнительно ко всему быстро-быстро переключать разряды, так чтобы все перебрать за 10мс и меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

Нашел для себя narodstream.ru ,доходчиво-)).

Программа  под динамическую индикацию (без утверждения, по крайней мере для меня)не совсем тоже самое,даже с учетом того что разряды подключены к анодам 7-сегментного  индикатора мимо 74hc595, т.е.:

#define R1_595 PORTCbits.RC1
#define R2_595 PORTCbits.RC2

мигание разрядов вижу(похоже на правду), так  цифры (dat) не читаются,скорость большая,

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    634

алгоритм прост: 1) выключаешь разряд, 2) загружаешь следующую цифру в регистр и 3) включаешь следующий разряд. Делаешь это всё безостановочно и быстро для каждого разряда и в этой последовательности. Иначе будет "след" на сегментах. Иногда даже требуется дождаться когда силовые транзисторы переключающие разряды выключатся прежде чем выставлять следующую цифру, десятки микросекунд... но контроллер быстрее и могут появится артефакты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 374
3 часа назад, Wawchuk сказал:

Нашел для себя narodstream.ru ,доходчиво-)). Программа  под динамическую индикацию

как по мне бред укуренной мечты или настольное руководство, как не надо писать код , символы отображаемые на индикаторе это тупо таблица кодов и формировать ее кейсом вместо массива констант тупость и бездарно растрачиваемое время в прерывании. как собственно и использование лесницы if..elseif вместо кайса при переключении индикаторов.

динамическая индикация на выводы порта

Скрытый текст

#include <htc.h>
#include <pic.h>


__CONFIG(INTIO & MCLRDIS & WDTDIS & LVPDIS & PWRTDIS & UNPROTECT);


#define dig1 RA3 //индикатор 1
#define dig2 RA2 //индикатор 2
#define dig3 RA7 //индикатор 3
#define dig4 RA6 //индикатор 3
//#define tochka RB2
//#define warning RA1
//#define _XTAL_FREQ 4000000

#define LED PORTB
#define SEG_A  (1<<0) // назначение сегментов индикатора
#define SEG_B  (1<<1) // соответствующим битам порта LED
#define SEG_C  (1<<2) //      A
#define SEG_D  (1<<3) //   F     B
#define SEG_E  (1<<4) //      G
#define SEG_F  (1<<5) //   E     C
#define SEG_G  (1<<6) //      D     H
#define SEG_H  (1<<7) //

const unsigned char digits [13] = {
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F), //           ; zero 
   (SEG_B + SEG_C)                                , //           ; one 
   (SEG_A + SEG_B + SEG_D + SEG_E + SEG_G ),        //           ; two 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_G),         //           ; three 
   (SEG_B + SEG_C + SEG_F + SEG_G),                 //           ; four 
   (SEG_A + SEG_C + SEG_D + SEG_F + SEG_G),         //           ; five 
   (SEG_A + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G), //           ; six 
   (SEG_A + SEG_B + SEG_C),                         //           ; seven 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G),//    ; eight 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G), //           ; nine 
  ~(SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G),//    ; пусто
   (SEG_A + SEG_F + SEG_E),                         //           ; R
   (SEG_A + SEG_D + SEG_E + SEG_F + SEG_G)};        //           ; E 


               unsigned char 	i                ; // 
volatile       unsigned char    a                ;//
volatile       unsigned char   	LEDS[4]          ; // 


volatile struct flag_type {
unsigned ON      : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
} flag;

 

 
//***********************************************************************
//* ИНИЦИАЛИЗАЦИЯ МК
//***********************************************************************
void init(void)
 {
   INTCON =0x00; // запрет всех прерываний 
   OSCCON = 0b01100100; //с 4 по 6 бит значение 110 означает 4mhz 
// настройка портов
   PORTA = 0; //обнуляем порт а
   PORTB = 0;
   TRISA = 0b00110011; //порты RA2, RA3, RA7, RA1 на выход а остальные на вход
   TRISB = 0b00000000; // все порты RB на выход  
   PORTA = 0; //обнуляем порт а
   PORTB = 0;
// настройка АЦП
   ADCON0=0b01000001; //тактирование АЦП Fosc/8, выбран канал AN0, модуль АЦП включен
   ADCON1=0b10001110; //правое выравнивание, включен аналоговый вход RA0/AN0, остальные входы цифровые   
// настройка таймера TMR0   
   TMR0 = 0; //сбрасываем таймер в 0
   OPTION = 0b00000011; // настройки таймера 1:16 и установка Set timer TMR0 даташит page 54:
// разрешение прерываний   
   TMR0IE = 1;
   GIE = 1;
 };

void interrupt Timer (void)
   { //прерывание по таймеру для динамической индикации

    if(TMR0IF)
      {
         TMR0IF=0;
         dig1=0; NOP(); dig2=0;NOP(); dig3=0; dig4=0; LED=~(digits [10]); // гасим все разряды
         a++;
         switch(a)
        {     // Динамическая индикация.
              case 1: dig4=1; LED=~(LEDS[3]); break; // Первый разряд
              case 2: dig3=1; LED=~(LEDS[2]); break; // второй разряд
              case 3: dig2=1; LED=~(LEDS[1]);  break; // третий
              case 4: dig1=1; LED=~(LEDS[0]); a=0; break; // четвертый

        }

    }
  }

void convert (void)
{ // функция преобразования 1024 в 5.00в
    unsigned int tmp;
    static unsigned long old_adc;
    static unsigned int mass_adc[16];
    static     unsigned char ii;

    unsigned int 	adc,volt        ; //
    unsigned char DS,j;
    unsigned char   	tempLEDS[4]          ; // 
        GODONE=1;
        while (GODONE){NOP();};
          tmp= (ADRESH<<8)+ADRESL; //помещаем значение ацп в переменную adc чтобы могли с ним работать ниже
         ii++;
      ii=ii&0b00001111;
        mass_adc[ii]=tmp;
           adc=0;
        for (j=0;j<16;j++)
           {
            adc=adc+mass_adc[j];  
           }
            
          adc=adc>>4;
          
        
//          adc  = tmp;
//         adc= (((old_adc)<<8)- old_adc + tmp )>>8;
//         old_adc=adc  ;

        adc  = (adc*5000L)/1024;
        volt = adc;
   if ( volt==4999) 
       {
        tempLEDS[3]= digits [10];
        tempLEDS[2]= digits [12];
        tempLEDS[1]= digits [11];
        tempLEDS[0]= digits [11];
       }
   else
       {
       for (j=0;j<4;j++)
         {
           DS=volt%10;
           volt=volt/10;
          if(j==3)
             { tempLEDS[j]= digits [DS] + SEG_H;}
          else
             { tempLEDS[j]= digits [DS];}  
         } 
       }
    GIE = 0;
      LEDS[3]= tempLEDS[3];
      LEDS[2]= tempLEDS[2];
      LEDS[1]= tempLEDS[1];
      LEDS[0]= tempLEDS[0];
    GIE = 1;      
   
}
//***********************************************************************
//* ОСНОВНАЯ ПРОГРАММА
//***********************************************************************
void main (void)
{
     init();
     for(i=255;i>0;i--);
     //******** ГЛАВНЫЙ ЦИКЛ *****************
     while (1)
          {
          convert ();  


          };
}

 

динамическая индикация на 74HC595

Скрытый текст

#include <htc.h>
#include <pic.h>


__CONFIG(INTIO & MCLRDIS & WDTDIS  & PWRTDIS & UNPROTECT);



//#define tochka RB2
//#define warning RA1
//#define _XTAL_FREQ 4000000


#define  PIN_ST GPIO4
#define  PIN_SH GPIO5
#define  PIN_DS GPIO0
#define  TRIS_DS TRIS0



#define SEG_A  (1<<0) // назначение сегментов индикатора
#define SEG_B  (1<<1) // соответствующим битам порта LED
#define SEG_C  (1<<2) //      A
#define SEG_D  (1<<3) //   F     B
#define SEG_E  (1<<4) //      G
#define SEG_F  (1<<5) //   E     C
#define SEG_G  (1<<6) //      D     H
#define SEG_H  (1<<7) //
#define dig3   (1<<8) //индикатор 1
#define dig2   (1<<9) //индикатор 2
#define dig1   (1<<10)//индикатор 3
#define dig0   (1<<11)//индикатор 3
#define LED_V  (1<<12)//индикатор 1
#define LED_A1 (1<<13)//индикатор 2
#define LED_A2 (1<<14)//индикатор 3
// общий анод :
const unsigned int digits [15] = {
   (SEG_G + SEG_H),                                                 //; zero 
   (SEG_A  + SEG_D + SEG_E + SEG_F + SEG_G + SEG_H ),               //; one 
   (SEG_C + SEG_F+ SEG_H ),                                         // ; two 
   (SEG_E + SEG_F+ SEG_H ),                                         // ; three 
   (SEG_A + SEG_D + SEG_E + SEG_H ),                                // ; four 
   (SEG_B + SEG_E + SEG_H ),                                        // ; five 
   (SEG_B + SEG_H ),                                                // ; six 
   (SEG_D + SEG_E + SEG_F + SEG_G + SEG_H ),                        // ; seven 
   (SEG_H ),                                                        //; eight 
   (SEG_E + SEG_H ),                                                //; nine 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G + SEG_H ),//; пусто
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_H ),                //; R
   (SEG_B + SEG_C + SEG_H ),                //; E 
   (SEG_A + SEG_G + SEG_H ),                                        //; U
   (SEG_D + SEG_H ),                                                //; A
   };
// общий катод :   
/*
const unsigned int digits [15] = {
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F), //           ; zero 
   (SEG_B + SEG_C)                                , //           ; one 
   (SEG_A + SEG_B + SEG_D + SEG_E + SEG_G ),        //           ; two 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_G),         //           ; three 
   (SEG_B + SEG_C + SEG_F + SEG_G),                 //           ; four 
   (SEG_A + SEG_C + SEG_D + SEG_F + SEG_G),         //           ; five 
   (SEG_A + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G), //           ; six 
   (SEG_A + SEG_B + SEG_C),                         //           ; seven 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G),//    ; eight 
   (SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G), //           ; nine 
  ~(SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G),//    ; пусто
   (SEG_A + SEG_F + SEG_E),                         //           ; R
   (SEG_A + SEG_D + SEG_E + SEG_F + SEG_G),                 //     ; E 
   ( SEG_B + SEG_C + SEG_D + SEG_E + SEG_F),    //           ; U
   (SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G) //           ; A
   };
*/
               unsigned char 	i                ; // 
volatile       unsigned char    a=0                ;//
volatile       unsigned int   	LEDS[4]          ; // 
//volatile       unsigned int   	tempLEDS[4]          ; // 

volatile struct flag_type {
unsigned ON      : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
unsigned                 : 1;
} flag;

 
unsigned int read_ADC (unsigned char chanel);
 
//***********************************************************************
//* ИНИЦИАЛИЗАЦИЯ МК
//***********************************************************************
void init(void)
 {
   INTCON =0x00; // запрет всех прерываний 
   CMCON = 0x07; // компаратор выключен
// настройка портов
   GPIO = 0; //обнуляем порт а

   TRISIO = 0b00000111; //порты RA2, RA3, RA7, RA1 на выход а остальные на вход

   GPIO = 0; //обнуляем порт а

// настройка АЦП
   ANSEL=0b00010111; //тактирование АЦП Fosc/8, включен аналоговый вход RA0/AN0, остальные входы цифровые   
   ADCON0=0b10000001; //правое выравнивание, выбран канал AN0, модуль АЦП включен

// настройка таймера TMR0   
   TMR0 = 0; //сбрасываем таймер в 0
   OPTION = 0b00000011; // настройки таймера 1:16 и установка Set timer TMR0 даташит page 54:
// разрешение прерываний   
   T0IE = 1;
   GIE = 1;
 };

void interrupt Timer (void)
   { //прерывание по таймеру для динамической индикации

    unsigned char i;   
    unsigned int registr ;

    if(T0IF)
      {
         T0IF=0;

         switch(a)
        {     // Динамическая индикация.
              case 0: // Первый разряд
                    registr= LEDS[0] ;
                    a=2;
                     break; 
              case 1: // второй разряд
                    registr= LEDS[1] ;
                    a=3;                    
                     break; 
              case 2: // третий
                    registr= LEDS[2] ;
                    a=1;                    
                    break; 
              case 3: // четвертый
                    registr= LEDS[3] ;
                    a=0;                   
                    break; 
        }
        ANS0=0;
        TRIS_DS=0;
        for(i=0;i<16;i++)
        {
        if(registr&(1<<15)) {PIN_DS = 1;} else {PIN_DS = 0;}
        registr = registr<<1;
        PIN_SH = 1;
        NOP();
        PIN_SH = 0; 
        PIN_DS = 0;
        }
      NOP();
      PIN_ST = 1;
      NOP();
      PIN_ST = 0; 
      TRIS_DS=1; 
      ANS0=1;

    }
  }

void convertU (void)
{ // функция преобразования 1024 в 5.00в



    unsigned int 	volt        ; //
    unsigned char DS;
    unsigned char j;
    unsigned int   	tempLEDS[4] ;


        volt  = read_ADC (0);        
   if ( volt>=4999) 
       {
        tempLEDS[3]= digits [10]; // выводим Err 
        tempLEDS[2]= digits [12];
        tempLEDS[1]= digits [11];
        tempLEDS[0]= digits [11];
       }
   else
       {
       for (j=0;j<4;j++)
         {
           DS=volt%10;
           volt=volt/10;
           tempLEDS[j]= digits [DS];  
         } 
         tempLEDS[3]&= (~ SEG_H);
       }
        tempLEDS[3]|= dig3;
        tempLEDS[2]|= dig2;
        tempLEDS[1]|= dig1;
        tempLEDS[0]|= dig0;

    GIE = 0; 
      LEDS[3]= tempLEDS[3];
      LEDS[2]= tempLEDS[2];
      LEDS[1]= tempLEDS[1];
      LEDS[0]= tempLEDS[0];
    GIE = 1;      
   
}
void convertA (void)
{ // функция преобразования 1024 в 5.00в



    unsigned int 	volt        ; //
    unsigned char DS;
    unsigned char j;
    unsigned int   	tempLEDS[4] ;


        volt  = read_ADC (1);
        
   if ( volt>=4999) 
       {
        tempLEDS[3]= digits [10];
        tempLEDS[2]= digits [12];
        tempLEDS[1]= digits [11];
        tempLEDS[0]= digits [11];
       }
   else
       {
       for (j=0;j<4;j++)
         {
           DS=volt%10;
           volt=volt/10;
           tempLEDS[j]= digits [DS];  
         } 
         tempLEDS[3]&= (~ SEG_H);
       }

        tempLEDS[3]|= dig3;
        tempLEDS[2]|= dig2;
        tempLEDS[1]|= dig1;
        tempLEDS[0]|= dig0;

    GIE = 0;
      LEDS[3]= tempLEDS[3];
      LEDS[2]= tempLEDS[2];
      LEDS[1]= tempLEDS[1];
      LEDS[0]= tempLEDS[0];
    GIE = 1;      
   
}
//***********************************************************************
//* ОСНОВНАЯ ПРОГРАММА
//***********************************************************************
void main (void)
{
     init();
     for(i=255;i>0;i--);
     //******** ГЛАВНЫЙ ЦИКЛ *****************
     while (1)
          {
           if(GPIO3)
           {
            convertU ();  
           }
           else
           {
            convertA ();  
           }            
//      while (!CMIF || !TMR1IF);
//      while (!CMIF | !TMR1IF);
//      while (!CMIF || !PIR1bits.TMR1IF);
      NOP();
      NOP();
          };
}
//************************************************************************
//*
//************************************************************************
unsigned int read_ADC (unsigned char chanel)
{ // функция преобразования 1024 в 5.000в

    static unsigned int old_adc,adc;
    static unsigned char caunt;

    unsigned char j=200;
       ADFM=1;
      ADCON0 = (ADCON0&0b11000011)|(chanel<<2);        ; // 
        while (j--);
        GODONE=1;
        while (GODONE){NOP();};
          old_adc +=  (ADRESH<<8)+ADRESL; //помещаем значение ацп в переменную adc чтобы могли с ним работать ниже
        caunt++; 
        caunt&=0b00111111; 

        if(caunt == 0) {
            adc = old_adc>>6; old_adc = 0;}

        return (adc*5000L)/1023;
} // end "read_ADC"

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Wawchuk    0

в main  остается только счет на 2 разряда:

 while(1)
    {
        for(i=0;i<100;i++){
            segchar(i);
            data_submit(dat);
            __delay_ms(500);
        }
    }

в вот внутри  разрядов segchar(R2) не различает единицы и десятки:

void interrupt timer0()
{
  T0_discharge();
  T0IF=0;
}

 void T0_ledprint(unsigned int number)
{
  R1 = number%10;
  R2 = number%100/10;
}
//--------------------------------------------
void T0_discharge(void)
{
  if(n_count==0)
  {
    PORTCbits.RC2 = 0;
//    segchar(R2);
    PORTCbits.RC1 = 1;
  }
  else if(n_count==1)
  {
    PORTCbits.RC1 = 0;
//    segchar(R1);
    PORTCbits.RC2 = 1;
  }
  n_count++;
  if (n_count>1) n_count=0;
}

 

сорри не увидел

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 374

в прерывании должна быть только динамическая индикация,

все расчеты что именно отображает индикатор и с какой скоростью изменяются показания задаются в майне(совершенно случайно деление/умножение очень легко может превысить время периода динамической индикации и тем более его не делают в прерывании)  , данные в прерывание передаются атомарно, на время передачи прерывания запрещаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть идея сделать паяльную станцию на основе ардуино по принципу ареометра может кто помочь либо скинуть ссылку на готовый проект для новечька?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    3 333

Очевидно, той самой, после употребления которой возникают подобные идеи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Сообщения

    • А на самой планке светодиоды последовательно включены? Тогда достаточно найти тот сгоревший и замкнуть его накоротко. Какое то время оставшиеся еще поработают. Драйвер ведь поддерживает стабильный ток и нагрузка на оставшиеся светодиоды ни чуть не увеличится.
    • *****, да причем здесь подстанция , PEN может иметь повторное заземление на ближайшем столбе, PEN  доходит до счетчика, из счетчика выходит уже N , которую предлагаете расщепить на PE & N , что потребует обязательного повторного заземления , те до ближайшего столба пойдет два провода нейтрали один через счетчик второй через повторное заземление. если у ТС счетчик с учетом диф.тока,те фазный и нулевой токи должны быть равны, если это не так оный считает по двойному тарифу. поэтому в нормальных схемах PEN расщепляется до прибора учета.  фирштейн? если у ТС обычный счетчик можно делать так как вы сказали
    • Нет, не убедил. Для тех кто в танке: есть более простые, народные и дешовые средства для удаления тонера. Каково будет ваше мнение по поводу метилового спирта? Он хорошо справится с данной задачей,  но он как и "пары бензина вредны для здоровья". Ваши средства очень радикальны, это как гвоздь для штапика забивать кувалдой. Здесь в теме я приводил удачный пример применения смывок, но для удаления не затвердевшей uv паяльной маски, при этом предупредил о мерах предосторожности. 
    • До внедрения 5 и 3-х проводной системы в терминологии зануления и заземление было мнрго лукавства и неразберихи.
    • Тестером наличие соединений от ножки до контакта колодки проверили?
    • Не грубите. Да, действительно. Там ещё набор пластин или проводов использовался как гибкий проводник от подвижной вторички. Лет 8 уж как прошло, запамятовал.    
    • Два вывода - собственно контект. С одним из них соединен вывод лампочки. Третий вывод - второй вывод лампочки. Эта схема обычно нарисована на корпусе такого переключателя.