Перейти к содержанию

IIIytNIK

Members
  • Постов

    1 641
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные IIIytNIK

  1. Не хватало еще спор начать какой тонер лучше.

    А тут и спорить нечего - только Static Control, только хардкор. За 2 года работы админом провел эксперименты со всеми известными марками тонера. Булат убивает барабан за 3 заправки, максимум 4 проживал. AQC в отработку весь идет.

    p8e? Это ведь модель принтера ксерокс, не?

    Сумсунг и ксерокс одно и тоже посути. Как НР и Кэнон.

  2. Настраивается там все ровно 30 секунд:

    На компьютере, после установки и запуска программы ничего не трогаем, задаем только пароль для подключения. Порт оставляем стандартный 5900:

    Пароль задаем либо сразу после установки, либо в Primary password: Change...

    21b43245af78.png

    На планшете:

    Там где VNC сервер пишем ip адрес компьютера, а там где VNC пароль - тот пароль, который указали на компьютере:

    36d5a17b8652t.jpg

    73fe281d30d8t.jpg

    Жмем подключиться и получаем:

    946de5474b25t.jpg

  3. Проверяйте, если не запустится, тогда подпаяйте к крайним выводам питания (с противоположной стороны от ключа) провод по которому будете подавать +12. Либо, опять же, не городить, а купить переходник папа-папа.

    7male2n.jpg

    Но лучше, конечно, найти 2,5" sata диск, тем более они сейчас стоят копейки.

  4. Транзистор s8050. Заменить можно 2s8050, 2n8050, 2sс8050.

    Вопрос только сгорело ли что-нибудь еще...

    UPD: Меня больше всего контакты из пуговиц от курток удивляют :D Придумают же...

  5. Напряжение +5V есть в разъеме 2,5" IDE. +12V в 2,5" дисках не используется.

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

    Можно не городить, а купить вот такой шлейф

    428725761_042.jpg

  6. Такой адаптер не подойдет. Это адаптер для подключения ноутбучных(2,5") IDE жестких дисков через интерфейс SATA. Вам же нужен адаптер для подключения SATA жестких дисков через 2,5" IDE. Типа такого:

    SATA%202.5IDE.jpg

    Проблема будет только с размещением диска внутри ноутбука - места для жесткого диска с адаптером там не хватит.

    Как вариант можете поискать на местных барахолках 2,5" IDE жесткие диски

  7. Постоянно рулю рабочим столом компьютера с планшета. На компьютере Windows Server 2008 и GNU/Linux Debian 6, на планшете (Nexus 7 2013) Android 4.4.2.

    В качестве серверной части на компьютере используется программа TightVNC. Программа кроссплатформенная, есть версии и для Windows и для Linux.

    В качестве клиентской части на планшете используется программа bVNC.

  8. Если для PORTC будут другие значения, то нужно будет объявлять еще одну переменную. Например uint8_t portcdata EEMEM; . И потом в процессе записи и чтения обращаться уже по этому адресу

    eeprom_write_byte(&portcdata, PORTС);

  9. Все начинается сверху

    #include <avr/eeprom.h>

    Подключаем библиотеку для работы с EEPROM. EEPROM это энергонезависимая память микроконтроллера. У Atmega8 её объем составляет 512 байт. Немного, но в целом хватает.

    uint8_t eedata EEMEM;

    Объявляем глобальную переменную eedata размером 1 байт в eeprom. Грубо говоря, отмечаем кусок памяти eeprom размером 1 байт и даем ему название eedata. Теперь к этому куску памяти мы можем обращаться по имени eedata.

    eeprom_write_word (&eedata, PORTD);

    Записываем в eeprom по адресу eedata значение из переменной PORTD. Я правда немного неправильно написал, вместо eeprom_write_word нужно использовать eeprom_write_byte

    PORTD = eeprom_read_byte(&eedata);

    Присваиваем переменной PORTD значение хранящееся в eeprom по адресу eedata.

  10. В чем пишите? Avr studio?

    Попробуйте так:

    #define F_CPU 1000000UL
    #include <avr/io.h> //библиотека общая для всех Atmel
    #include <avr/iom8.h> //опсиание объявлений для Atmega8
    #include <util/delay.h>
    #include <avr/eeprom.h>
    uint8_t eedata EEMEM;
    
    int main(void) //начало главной функции
    {
    DDRD = 0xFF; //открываем порт "D" как вывод
    DDRB = 0x00; //Открываем порт "B" как ввод
    DDRC = 0x00; //Открываем порт "A" как ввод
    while (1)
    {
    // БЛОК PLUS 1
    if(PINB == 0b11111110)
    {
    while (1)
    {
     if(PINB == 0b11111111)
     {
    	 if(PORTD == 0xFF)
    	 {
    	 PORTD = 0xFF;
    	 }
    	 else
    	 {
    	 PORTD = PORTD+1;
    	 }
    	 break;
     }
    }
    }
    //БЛОК MINUS 1
    if(PINB == 0b11111101)
    {
    while (1)
    {
     if(PINB == 0b11111111)
     {
    	 if(PORTD == 0x00)
    	 {
    	 PORTD = 0x00;
    	 }
    	 else
    	 {
    	 PORTD = PORTD-1;
    	 }
    	 break;
     }
    }
    }
    //БЛОК LOAD*SAVE*RESET
    //БЛОК SAVE
     if(PINB == 0b01111111)
     {
    	 while (1)
    	 {
    	 if(PINB == 0b11111111)
    	 {
    	 eeprom_write_word (&eedata, PORTD);
    	 break;
    	 }
    	 }
     }
    //БЛОК LOAD
     if(PINB == 0b10111111)
     {
    	 while (1)
    	 {
    	 if(PINB == 0b11111111)
    	 {
    	 PORTD = eeprom_read_byte(&eedata);
    	 break;
    	 }
    	 }
     }
    //БЛОК RESET
    if(PINB == 0b11011111)
    {
     while (1)
     {
    	 if(PINB == 0b11111111)
    	 {
    	 //Обнуление переменной PORTD
    	 PORTD = 0;
    	 break;
    	 }
     }
    }
    
    }
    } // скобочка
    

  11. Это не программатор, а отладочная плата. Служит для разработки устройств с применением микроконтроллеров XMOS. Что можно сделать - все что угодно, в меру технических возможностей платы и собственных навыков.

    Описание архитектуры и примеры работ есть на оф.сайте

  12. Тип данных у меня int . ваш вариант увеличит температуру в 10раз.

    Нет. Чтобы перевести float в int нужно умножить значение переменной на 10^x, где x - количество требуемых знаков после запятой. Функция ds18b20_temperature возвращает значение типа float. Переменная temp0 типа int. В вашем случае при операции присваивания temp0=ds18b20_temperature(&rom_code[0][0]); переменной temp0 будет присвоена ТОЛЬКО целая часть. Например если ds18b20_temperature возвращает 12.34, то переменной temp0 присвоится только 12.

    Поэтому, чтобы получить хотя бы один знак после запятой, нужно умножить значение температуры на десять, и только после этого выполнить операцию присваивания. Т.е. temp0=ds18b20_temperature(0)*10. ds18b20_temperature*10 = 123.4, а переменной temp0 присвоится 123.

    А в дальнейшем, при выводе на дисплей, в качестве целой части выводим temp0/10. Так как temp0 у нас int, то temp0/10=12. И в качестве дробной выводим остаток от деления на 10 temp0%10.

    А проблема в том, что нету десятых градусов. Проблема именно в датчике!

    Не может быть такой проблемы у датчика. Почему - читайте даташит и смотрите в каком виде датчик передает температуру. Если бы проблема была в датчике он бы выдавали либо нули, либо околесицу.

  13. Первые два правильные, в чем проблема-то? Инициализацию вообще можно не делать, по умолчанию ds18b20 работает в 12 битном режиме.

    temp0 какой тип данных имеет? В библиотеке ds18b20.lib функция ds18b20_temperature возвращает значение типа float.

    Попробуйте вот так:

    	 
    	  temp0=ds18b20_temperature(0)*10;  
    	  if (temp0>1000)
    	  {			   
    		 temp0=40960-temp0;		    
    		 temp0=-temp0;			    
    	  }
    		   // else temp0*=10;
    	 sprintf(buffer, "Td=%d.%d\xdfC",temp0/10, temp0%10); // колл. этапов
    	 lcd_clear();
    	 lcd_gotoxy(0,1);
    	 lcd_puts(buffer);	   
    	 delay_ms(1500);			 
    }

    Будет работать, но будет проблема с отрицательными числами

    Поэтому лучше делать как надо и использовать float:

    float temp0;
    ------------------------------------------
    temp0=ds18b20_temperature(0);  
    	  if (temp0>1000)
    	  {			   
    		 temp0=4096.0-temp0;		    
    		 temp0=-temp0;			    
    	  }
    		   // else temp0*=10;
    	 sprintf(buffer, "Td=%.1f\xdfC",temp0); // колл. этапов
    	 lcd_clear();
    	 lcd_gotoxy(0,1);
    	 lcd_puts(buffer);	   
    	 delay_ms(1500); 
    

×
×
  • Создать...