Для вопросов не требующих создания отдельных тем(но, сначала погугли)

ну я бы сказал на 40% только убедительно… даже если это 100% правда…

Господа! Есть у кого положительный опыт по разведению старой паяльной пасты. Спирто-канифольный и ЛТИ-120 не шибко помогают. Вони много, а плавится фигово. Мож ТТ или какой активный без отмывочный кто пробовал?

Бесполезно это всё, я что только не пробовал: и спирт и бензин/нефрас и флюсы разные. Помогало (немного) на уровне - сейчас немного размешал и сразу сработал: замешивать с использованием флюса RMA-218 (берешь шпатель, на него пасту с флюсом и вторым шпателем хорошенько «перетираешь»). Но это всё долго не хранится. Уже через несколько дней опять «колом». Не знаю почему…

Просто нужно сразу хранить паяльную пасту в вакуумном пакете и всё будет хорошо. Другого варианта просто нет…

ТТ - это красный такой фасуется в маленькие баночки?

Да.

И, кстати, типа всё уже украдено изобретено до нас. Разбавитель И, судя по составу, можно ещё попробовать глицерин или пропиленгликоль :slightly_smiling_face:

Фигня это. Я же говорю - пробовал если не всё, то почти всё.
Этот разбавитель подходит для случая если нормальную паяльную пасту нужно по какой-то причине сделать по жиже. Засохшую он не оживит.

А нафига паста ? Серию делаем ?

Не знаю.
Я когда-то покупал для лужения плат (ещё до того как стал маской пользоваться).

Если безотмывочная то ничем, есть ещё и на двух других основах, одна спиртом, другая водой разбавляются

А вот что будет если на P- канальной транзисторе перепутать S и D ? Вот он совсем не должен работать(по ИИ) или будет, но плохо?

Да, транзистору будет плохо - выгорит диод. ))

Вооозможно, ну и хрен бы с ним, если выгорел не в КЗ.
Дибилизм ситуации, что это готовый девайс(лазерный гравер) продаваемый на али без явных проблем(не замечено в отзывах). Оно вроде сначала работает(или сразу не работает), но вскоре (1-30 мин.) начинает тупить: по оси X движется рывками/не движется/трясётся/ движется только в одну сторону., по оси Y вообще не движется, но явно есть реакция. Причем есть реакция на движение по Z :open_mouth:. Выглядит как или программный глюк или беда с драйверами. Менялись ардуины/прошивка/драйвера/настройки движения. Вроде начинает работать но потом при тех же компонентах условиях опять переставало. Полюбому выходит беда с платой, или магия(совпадение нескольких факторов). Тогда я её отложил(ибо всё равно переделал на рисовалку с сервой, а сейчас решил вернуть управление лазером и всё повторилось.
Тут и увидел енту хрень(перепутаный исток/сток) Питание на плату поступает через два мосфета (на кой?), причём один перевёрнут. Это не ошибка монтажа, ибо на затвор приходит правильно. Напряжение при коммутации норм(под нагрузкой не проверил :thinking:)

А как ты решил, что исток со стоком перепутаны?

Я тут писал (год где-то назад), есть у меня модули DC-DC на базе XL4015E. Так вот, что-то мне нужно было в плате поправить и я полез прозванивать и сверяться со схемой. Оказалось , что сами мс XL4015E были «перевёрнуты» (то есть нумерация выводов не как в даташите слева направо, а наоборот справа налево). Видимо выпустили партию с перевёрнутой подложкой (ошибка корпусировки), но чтобы не выбрасывать - переразвели плату и пустили всю партию на продажу (правда дешевле).

Так что не факт, что там что-то перепутано ))

image

Ха! Один из двух видов проблем электротехники. :slightly_smiling_face:

А с питанием и под нагрузкой всё норм. Странно это :thinking:

Чего странного-то? Плата явно не односторонняя, стал быть пины скорее всего выходят на нижнюю сторону.

ЗЫ: а есть еще многослойные платы, там переходное отверстие может нырнуть вглубь и выйти на внутренний слой, а с виду будет выглядеть, что вообще никуда и ни к чему не подключено ))

Не, - двусторонняя, однослойная. Входные 12в заходят в сток первого транзистора :open_mouth:, а выходят уже на исток второго. Больше никуда. И это работает! :slightly_smiling_face:
Ха! Ожидаемо после первого транзистора всегда есть напряжение(через диод), меньшее, но повышается до нормы после подачи на затвор. Ну вот на кой так делать? :face_with_raised_eyebrow:

никто не сталкивался с чем то таким… что при повторном чтении файлов на sd карте, скорость чтения падает на 33-50% ? при втором, 4, 6, 8 скорость падает, а при 1, 3, 5, 7 скорость нормальная…

если чуть конкретнее не могу понять почему зацикленная анимация, выводится на дисплей при четном воспроизведении медленнее

#include <TFT_eSPI.h>
#include <TJpg_Decoder.h>
#include <SPI.h>
#include <SD.h>

using namespace fs;

#define SD_CS 5
#define TFT_BL 12
#define TOTAL_FRAMES 420

#define SCREEN_W 128
#define SCREEN_H 160
#define IMG_W 113
#define IMG_H 164
#define POS_X ((SCREEN_W - IMG_W) / 2)
#define POS_Y ((SCREEN_H - IMG_H) / 2)

TFT_eSPI tft = TFT_eSPI();

uint16_t* frameBuffer = nullptr;
uint16_t currentFrame = 0;

uint8_t* jpgBuffer = nullptr;
size_t jpgSize = 0;

bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t* bitmap) {
  if (y >= tft.height()) return 0;
  
  if (frameBuffer != nullptr) {
    uint16_t* dest = frameBuffer + (y * SCREEN_W + x);
    uint16_t* src = bitmap;
    for (int row = 0; row < h; row++) {
      memcpy(dest + row * SCREEN_W, src + row * w, w * 2);
    }
  }
  return 1;
}

bool loadJpgToMemory(uint16_t frameNum) {
  char filename[20];
  sprintf(filename, "/%03d.jpg", frameNum);
  
  File file = SD.open(filename);
  if (!file) return false;
  
  jpgSize = file.size();
  
  if (jpgBuffer != nullptr) {
    free(jpgBuffer);
    jpgBuffer = nullptr;
  }
  
  jpgBuffer = (uint8_t*)malloc(jpgSize);
  if (jpgBuffer == nullptr) {
    file.close();
    return false;
  }
  
  size_t bytesRead = file.read(jpgBuffer, jpgSize);
  file.close();
  
  return bytesRead == jpgSize;
}

// ★ ФУНКЦИЯ СБРОСА ДЕКОДЕРА ★
void resetDecoder() {
  // Полный сброс декодера
  TJpgDec.setJpgScale(1);
  TJpgDec.setCallback(tft_output);
  
  // Небольшая пауза для стабилизации
  delay(5);
  
  Serial.println("Decoder reset!");
}

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("\n=== ST7735 FIXED ===");
  
  pinMode(TFT_BL, OUTPUT);
  digitalWrite(TFT_BL, HIGH);
  
  tft.init();
  tft.setRotation(0);
  tft.setSwapBytes(true);
  tft.fillScreen(TFT_BLACK);
  
  if (!SD.begin(SD_CS, SPI)) {
    Serial.println("SD Error!");
    while(1);
  }
  Serial.println("SD mounted!");
  
  TJpgDec.setJpgScale(1);
  TJpgDec.setCallback(tft_output);
  
  if (!SD.exists("/001.jpg")) {
    Serial.println("File 001.jpg not found!");
    while(1);
  }
  
  size_t bufferSize = SCREEN_W * SCREEN_H * sizeof(uint16_t);
  frameBuffer = (uint16_t*)malloc(bufferSize);
  if (frameBuffer == nullptr) {
    Serial.println("No memory!");
    while(1);
  }
  
  if (!loadJpgToMemory(1)) {
    Serial.println("Failed to load first jpg!");
    while(1);
  }
  
  memset(frameBuffer, 0, bufferSize);
  TJpgDec.drawJpg(POS_X, POS_Y, jpgBuffer, jpgSize);
  tft.pushImage(0, 0, SCREEN_W, SCREEN_H, frameBuffer);
  
  Serial.println("Started!");
}

void loop() {
  char filename[20];
  sprintf(filename, "/%03d.jpg", currentFrame + 1);
  
  if (loadJpgToMemory(currentFrame + 1)) {
    memset(frameBuffer, 0, SCREEN_W * SCREEN_H * 2);
    TJpgDec.drawJpg(POS_X, POS_Y, jpgBuffer, jpgSize);
    tft.pushImage(0, 0, SCREEN_W, SCREEN_H, frameBuffer);
  }
  
  currentFrame++;
  
  // ★ КОГДА АНИМАЦИЯ ЗАКАНЧИВАЕТСЯ - ПОЛНЫЙ СБРОС ★
  if (currentFrame >= TOTAL_FRAMES) {
    currentFrame = 0;
    
    // Освобождаем буфер
    if (jpgBuffer != nullptr) {
      free(jpgBuffer);
      jpgBuffer = nullptr;
    }
    
    // Сбрасываем декодер
    resetDecoder();
    
    // Принудительно очищаем экран
    tft.fillScreen(TFT_BLACK);
    
    // Загружаем первый кадр заново
    if (loadJpgToMemory(1)) {
      memset(frameBuffer, 0, SCREEN_W * SCREEN_H * 2);
      TJpgDec.drawJpg(POS_X, POS_Y, jpgBuffer, jpgSize);
      tft.pushImage(0, 0, SCREEN_W, SCREEN_H, frameBuffer);
    }
    
    Serial.println("=== CYCLE RESTART ===");
    
    // Небольшая задержка для стабилизации
    delay(10);
  }
}

библиотека https://github.com/Bodmer/TJpg_Decoder

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

Нужно учиться самому искать как причины, так и способ решения проблемы, а не предлагать все желающим “посмотрите мой код!”. “Код” надо смотреть с инструментом - осциллографом, логическим анализатором, etс. А для этого нужно иметь весь комплект оборудования, не говоря о том, что этот комплект еще нужно собрать в работоспособное устройство. Причем, желательно не на соплях, а при помощи пайки.

а это поможет ?))) данные же в одном месте и я просто их читаю, сам пытался конечно решить, часа 3… ии вовсе решил меня убедить что проблемы нет, и даже код от него не увидел что есть задержки вывода, только с секундомером можно заметить))) библиотеку пытался ему же скормить… не сразу побежал с вопросом))) что то пытался сделать, и сдается мне что я не смогу решить этот вопрос))) ну и есть некоторая вероятность что я что то элементарное упускаю… например буфер где то не очищаю…