JSFiddle - React, Tailwind, and code Playground

JavaScript

function encoder(min, max, val, n, w) {
  const range = max - min
  const bitsPerDay = Math.floor(n / range)
  const offset = (val - min) * bitsPerDay
  
  const sdr = new Array(n).fill(0)
  
  for (let i = offset; i < offset + w; ++i) {
    sdr[i % n] = 1
  }
  
  return sdr.join('')
}

console.log(encoder(1, 8, 1, 14, 3))
console.log(encoder(1, 8, 2, 14, 3))
console.log(encoder(1, 8, 3, 14, 3))
console.log(encoder(1, 8, 4, 14, 3))
console.log(encoder(1, 8, 5, 14, 3))
console.log(encoder(1, 8, 6, 14, 3))
console.log(encoder(1, 8, 7, 14, 3))