16mm framviser

Ombygg av 16mm-framviser for digitalisering av film for Kunsthøyskolen i Oslo.

Tok ut motor og all elektronikk. satte inn ny motor, powersupply og styringselektronikk for å kunne regulere hastighet og sende triggersignaler for hver frame til kameraet.

Brukte en Teensy 3.2 til styringen.

Video som viser framviseren i drift etter ombygging.
Før ombygging
Plukket ut alt som har med motor og elektronikk.
Strømforsyning og styringselektronikk
Ny motor, Solid State Relé og IR-gaffelsensor for å lage triggersignaler
OLED display
Skjema

Kode


// --- Alfredo ---
// Filmframviser - motordriver og trigger
// 2019 - Rasmus Hildonen - Werket.com
// Biblioteker
include <Arduino.h>
include <U8g2lib.h>
include <Wire.h>

// Variabler
int gaffel = 0;
int hastighet = 0;
int justering = 0;
int motorprosent = 0;
int delayMs = 0;
long delayTrigger = 0;
unsigned long naaTrigger = 0;
//Defineringer av porter
define MOTOR 3
define SENSOR 5
define MOTORPOT A0
define DELAYPOT A1
define UTEN 22
define UTTO 23
define LED 13


// Skjerm
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=/ SCL, / data=/ SDA, / reset=/ U8X8_PIN_NONE); uint8_t z = 127; // start value uint32_t lcg_rnd(void) { z = (uint8_t)((uint16_t)65(uint16_t)z + (uint16_t)17);
return (uint32_t)z;
}


void setup() {
analogWriteResolution(10); //sette PWM oppløsnig til 0-1023
pinMode(MOTOR, OUTPUT);
pinMode(SENSOR, INPUT);
pinMode(UTEN, OUTPUT);
pinMode(UTTO, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(MOTORPOT, INPUT);
pinMode(DELAYPOT, INPUT);
attachInterrupt(digitalPinToInterrupt(SENSOR), pulsUt, RISING);
analogWriteFrequency(MOTOR, 100);
u8g2.begin();
bootSkjerm();
}


void loop() {
hastighet = (1024 - analogRead(MOTORPOT));
if(hastighet < 5){hastighet = 0;}
justering = (1024 - analogRead(DELAYPOT));
delayMs = map(justering, 0, 1024, 0, 10);
if(hastighet < 5){pauseSkjerm();}
else{skrivSkjerm();}
analogWrite(MOTOR, hastighet);
}


void pulsUt(){
delay(delayMs);
digitalWrite(UTEN,HIGH);
digitalWrite(UTTO,HIGH);
digitalWrite(LED,HIGH);
delay(2);
digitalWrite(UTEN,LOW);
digitalWrite(UTTO,LOW);
digitalWrite(LED,LOW);
}


void skrivSkjerm() {
motorprosent = map(hastighet, 0, 1024, 0, 100);
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(0,12);
u8g2.print("16mm - Digitize");
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(0,37);
u8g2.print("Motor: ");
u8g2.print(motorprosent);
u8g2.print("%");
u8g2.setCursor(0,60);
u8g2.print("Delay: ");
u8g2.print(delayMs);
u8g2.print("mS");
u8g2.sendBuffer();
}


void bootSkjerm() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(0,12);
u8g2.print("16mm - Digitize");
u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(0,35);
u8g2.print("Made by:");
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(0,60);
u8g2.print("Werket.com");
u8g2.sendBuffer();
delay(5000);
}


void pauseSkjerm() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(25,12);
u8g2.print("Alfredo");
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(50,35);
u8g2.print("is");
u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(22,60);
u8g2.print("Sleeping");
u8g2.sendBuffer();
}



arrow-left Gå vogn
Previous post