b

 

 

Бложик потихоньку переезжает сюда

Паяльная станция на Arduino






наброски кода из видео





приблизительная схема, делал наброски чтобы самому не заблудится.



#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

#define pinB 4 // вход B энкодера
#define pwmPin 9 //  мосфет нагревателя
#define analogIn 1 // вход от усла термопары

volatile unsigned int setTemp = 290;  
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 

void setup(){
  lcd.begin();
  lcd.backlight();
  
  pinMode(pwmPin, OUTPUT);
  pinMode(pinB, INPUT);
  attachInterrupt(0, encoder, FALLING); 
  attachInterrupt(1, key, FALLING); 
}

void encoder(){  
  if (!digitalRead(pinB)) {
    if (setTemp < 480) setTemp += 10;      
  } 
  else {
    if (setTemp != 0) setTemp -= 10;    
  }  
}

void key (){ // кнопка энкодера
//  pwm = 128;
 }

void loop(){
  
    int val = analogRead(analogIn);
    int temperature = map(val, 0, 580, 20, 480); 
    
    lcd.setCursor(0, 0);
    lcd.print("t:");
    lcd.print(setTemp);
    lcd.print("C   "); 
    
    lcd.setCursor(10, 0);
    lcd.print(temperature);
    lcd.print("C  ");  
 
     
    lcd.setCursor(0, 1);     
    lcd.print("val:");
    lcd.print(val);
    lcd.print("   ");    
   
    if (temperature < setTemp) digitalWrite(pwmPin, HIGH);
    else digitalWrite(pwmPin, LOW);  
    
    lcd.setCursor(15, 1);  
    if (digitalRead(pwmPin)) lcd.print("#");
    else lcd.print(" ");
        
}




/// без термостата, для паяльников без термопары
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

#define pinB 4 // вход B энкодера
#define pwmPin 9 //  мосфет нагревателя
#define analogIn 1 // вход от усла термопары

volatile unsigned int pwm = 500;  
 
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup(){
  lcd.begin();
  lcd.backlight();
  
  pinMode(pwmPin, OUTPUT);
  pinMode(pinB, INPUT);
  attachInterrupt(0, encoder, FALLING); 
  attachInterrupt(1, key, FALLING); 
}

void encoder(){  
  if (!digitalRead(pinB)) {
    if (pwm < 65500) pwm += 100;      
  } 
  else {
    if (pwm != 0) pwm -= 100;    
  }  
}

void key (){ // кнопка энкодера
//  pwm = 128; 
}

void loop(){
  
//  analogWrite(pwmPin, pwm); 

    int val = analogRead(analogIn);
    int temperature = map(val, 0, 580, 20, 480); 
    
    lcd.setCursor(0, 0);
    lcd.print(temperature);
    lcd.print("t   "); 
    
    lcd.print("val:");
    lcd.print(val);
    lcd.print("   ");    
     
    
    lcd.setCursor(0, 1);
    lcd.print("PWM:");
    lcd.print(pwm);
    lcd.print("   ");    
 
    
   /////////
      lcd.setCursor(15, 1);
      digitalWrite(pwmPin, HIGH);  
      lcd.print("#");      
      delay(250);    
      
      lcd.setCursor(15, 1);
      digitalWrite(pwmPin, LOW); 
      lcd.print(" ");
      delay(pwm);    
 
   
}