Guest User

Untitled

a guest
Feb 20th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #define PIN_STATUS 13
  2. #define PIN_IR_LED 12
  3. #define FREQ 38400 // IR frequence
  4.  
  5. const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
  6.  
  7. //shutter sequence (on,off,on,off ... in microsecond)
  8. unsigned long sequence[] = {
  9.  2000,27830,390,1580,410,3580,400,63200,2000,27830,390,1580,410,3580,400,0};
  10. int seq_l;
  11. int delayVal;
  12.  
  13. //oscd is a delay in microsecond used at each oscillation.
  14. int oscd;
  15.  
  16. int getTime(){
  17.  
  18.  int sensorValue = analogRead(analogInPin);
  19. return ((sensorValue*0.82)/10);
  20.  
  21. }
  22.  
  23. void oscillate(int pin, unsigned long n, int shine){
  24.  int ir_status=0;
  25.  while(n>0){
  26.  n--;
  27.  delayMicroseconds(oscd);
  28.  ir_status = !ir_status;
  29. digitalWrite(pin, ir_status && shine);
  30. }
  31. }
  32.  
  33. void snap(){
  34.  int i;
  35.  digitalWrite(PIN_STATUS, 1);
  36. for(i=0;i<seq_l;i++){
  37.  oscillate(PIN_IR_LED, sequence[i], i%2==0);
  38.  }
  39.  digitalWrite(PIN_STATUS, 0);
  40. }
  41.  
  42. void setup() {
  43.  
  44.  Serial.begin(9600);
  45.  int min=1, max=100, i;
  46.  int last_oscd=0;
  47.  unsigned long before, intervalle;
  48.  oscd=max;
  49.  seq_l = sizeof(sequence)/sizeof(unsigned long);
  50.  pinMode(PIN_STATUS, OUTPUT);
  51.  pinMode(PIN_IR_LED, OUTPUT);
  52.  while(last_oscd!=oscd){
  53.  last_oscd=oscd;
  54.  oscd=(min+max)>>1;
  55.  before=millis();
  56.  oscillate(PIN_STATUS, FREQ, 1);
  57.  intervalle=millis()-before;
  58.  if(intervalle >= 1000) max=oscd;
  59.  else min=oscd;
  60.  }
  61.  
  62.  for(i=0;i<seq_l;i++){
  63.  sequence[i] = (sequence[i] * FREQ) / (intervalle * 1000);
  64.  }
  65. }
  66.  
  67.  
  68. void loop() {
  69.  
  70. delayVal = getTime()+2;
  71.  
  72.  for (int i=0;i<delayVal;i++){
  73.  delay(1000);
  74.  Serial.println(delayVal);
  75. delayVal = getTime()+2;
  76.  }
  77.  
  78.  snap();
  79.  
  80. }
Add Comment
Please, Sign In to add comment